- 全局变量(全局生存期,全局作用域)
全局变量未定义时初始值为0(指针为NULL),本地变量会随机乱码
不要用全局变量赋值给全局变量比如:
int all = 1;
int all2 = all; //此处会报错
void main();
- 静态本地变量(全局生存期,本地作用域)
在本地变量前添加:static
静态本地变量的初始化只在第一次进入函数时做,之后每次进入函数会保持上一次离开时的值
静态本地变量实际上是全局变量,与全局变量存在于同样的内存地址
打印变量地址的方法:
printf("address of all = %p",&all);
只不过其作用域是局部的
- 本地变量(本地生存期,本地作用域)
- 返回指针的函数
不要返回本地变量的地址,因为一旦离开函数本地变量就不存在了(不受控,离开函数后该变量的地址会被分配给其他变量),可以返回全局变量或静态本地变量的地址,返回函数内malloc的内存是安全的,但容易出现问题,最好返回传入函数的指针。
- 注意!
避免使用全局变量传递参数和结果
尽量避免使用全局变量量
使用全局变量和静态本地变量的线程是不安全的