全局变量与局部变量

C/C++中全局变量与局部变量的关系

  1. 全局变量与局部变量可以重名,在某个函数内引用变量时,会用到局部变量而不是全局变量,可以理解为“就近原则”。 
     

  2. 当一个函数体内有多个局部变量时,这些局部变量的作用于就限定在函数体内的更小一级区域,比如函数体内有两个循环体,在两个循环体内都定义了局部变量val,则val的作用域就为循环体内而不仅仅是函数体内。

  3. 重名情况下如果要使用全局变量,则需要使用作用域运算符(::),将该作用域运算符放在重名变量之前。  
     
  4. 全局变量可以被多个.C与.CPP文件使用,但要以static限定作用域为仅在本源文件中,也可在不同文件中声明,但只能允许在一处地方声明。    
     
  5. static放在全局变量之前构成静态全局变量,这与普通全局变量相比,在存储方式上都是静态存储方式,区别在于作用域。静态全局变量的作用域为定义该变量的源文件,所在在同一源程序下的其他源文件是无法使用该变量。而普通全局变量的作用域为整个源程序。一个源程序可以由多个源文件组成。  
     
  6. static放在局部变量之前构成静态局部变量,这与普通局部变量相比,作用域相同,区在于存储方式。静态全局变量为静态存储,而局部变量为动态存储。 
     
  7. 全局变量、静态局部变量、静态全局变量都存放在静态数据存储区。局部变量存放在栈区。 
      
  8. 当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。因为局部变量在函数调用后就销毁了,虽然地址还在,但是那个地址存的数据是无法保证安全性的。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值