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

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

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

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

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

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

 在本地变量前添加:static

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

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

打印变量地址的方法:

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

只不过其作用域是局部的

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

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

  • 注意!

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

尽量避免使用全局变量

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值