今天看堆栈有关的算法时突然又想到了局部变量的压栈问题,在局部函数里面先定义的变量先压栈,按照所所需的大小分配内存,先压栈的变量地址会大些,这个不知是否跟编译器的实现有关,问题来了 int n = 1; int m = 2; int k = 3; int *p = &k; cout<<&n<<endl...
分类:
其他好文 时间:
2014-11-09 12:29:51
阅读次数:
142
1. kernel中的成员之间重重嵌套,很有可以在一个地方修改了某一变量,而后导致另一地方出现异常宕机的情况。解决的最佳办法是查看宕机日志,找出最后异常出现的地方。最后异常出现的位置可能会非常的奇怪,造成的原因可能是在另一个地方的异常修改。此时在可能宕机处,print处相关变量地址, printk ...
分类:
其他好文 时间:
2014-11-03 14:27:42
阅读次数:
172
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在D...
分类:
编程语言 时间:
2014-11-03 12:56:14
阅读次数:
136
结构体指针指针当做函数参数数组当做函数参数1.结构体指针指向结构体变量的指针.称为结构体指针Studentstu={0};Student*p=&stu;Student*结构体指针类型(类型),p结构体指针变量(变量名);&stu结构体变量地址(初值)(*p).sex=‘m’;p->sex=’m’;(*p)对指针取值后是结构..
分类:
其他好文 时间:
2014-10-14 12:06:59
阅读次数:
183
char *fun()
{
char str[] = "hello";
return str;
}
这个函数的返回值?以及这个函数在栈上的存储布局
#include
#include
#include
char *fun()
{
char ptr[] = "fda";
int a = 3;
int b = 4; ...
分类:
其他好文 时间:
2014-10-10 00:18:58
阅读次数:
313
new关键字的使用除了在需要实例化一个对象,或罕见的需要延时加载数据的情况外,你基本上不需要使用new关键字。在Javascript里分配大量的new变量地址是一项很慢的操作,为了效率起见,你应该始终使用对象符号。new Array() 会实例化一个对象变量,而var arr=[],等于是直接声明一...
分类:
其他好文 时间:
2014-09-30 23:48:00
阅读次数:
179
引用和指针区别:1 引用必须初始化,指针可以初始化为NULL2 引用没有自己内存;指针有内存3 指针可改变指向,引用一旦指向不可以改变4有指针的指针,没有引用的引用 5 引用没有const,指针有const,但是一旦const就不可改变5 sizeof指针,得到指针指向变量地址的大小;sizeof引...
分类:
编程语言 时间:
2014-09-27 20:50:50
阅读次数:
299
第一步是要知道结构体大小的计算方式: 结构体大小等于最后一个成员的偏移量加上最后一个成员的大小, 偏移量指的是结构体变量中成员的地址 – 结构体变量地址的差, 第一个成员的偏移量为0 下面代码 TRecord2 = record a: Integer; b: Integer; c: Integer;...
分类:
其他好文 时间:
2014-09-11 23:47:12
阅读次数:
336
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在D...
分类:
其他好文 时间:
2014-08-21 16:40:24
阅读次数:
180
scanf 函数称为格式输入函数,即把用户键盘输入的内容保存到指定的变量中。scanf 函数签名scanf("格式控制字符串", 变量地址列表) scanf 函数是一个标准库函数,函数原型位于 中。与 printf 函数相同,C语言允许隐式使用 scanf 函数,即可以不提前包含 头文件。如果...
分类:
其他好文 时间:
2014-08-10 15:16:10
阅读次数:
169