MOOC C 程序结构 全局变量、本地变量等

  • 全局变量(全局生存期,全局作用域)

全局变量未定义时初始值为0(指针为NULL),本地变量会随机乱码

不要用全局变量赋值给全局变量比如:

int all = 1;
int all2 = all;  //此处会报错

void main();
  •  静态本地变量(全局生存期,本地作用域)

 在本地变量前添加:static

静态本地变量的初始化只在第一次进入函数时做,之后每次进入函数会保持上一次离开时的值

静态本地变量实际上是全局变量,与全局变量存在于同样的内存地址

打印变量地址的方法:

printf("address of all = %p",&all);

只不过其作用域是局部的

  • 本地变量(本地生存期,本地作用域)
  • 返回指针的函数

不要返回本地变量的地址,因为一旦离开函数本地变量就不存在了(不受控,离开函数后该变量的地址会被分配给其他变量),可以返回全局变量或静态本地变量的地址,返回函数内malloc的内存是安全的,但容易出现问题,最好返回传入函数的指针。

  • 注意!

避免使用全局变量传递参数和结果​​​​​​​

尽量避免使用全局变量

使用全局变量和静态本地变量的线程是不安全的

猜你喜欢

转载自blog.csdn.net/scarletteshu/article/details/100412605