C++(二)全局变量、局部变量及静态变量(static)的区别

   1。全局变量中static全局变量和普通全局变量的区别:

          相同点:1)共存于同一块内存(静态存储区)中;

                          2)生命期相同,都是到整个程序的生命期;

          不同点:1)前者是内部连接,后者是外部连接;

                          2)作用域不同:

                                前者的作用域是局部于它所在的文件的,也就是说在当前程序中其它文件中是不能使用它的,如果想在想其它文件中声明它为extern的来访问它,编译器就会报错,当然在其它文件中即使有同名的变量也不会有名字冲突的问题;

                         后者的作用域是整个程序中的所有文件,可以在其它文件中声明它为extern来访问它,当然在整个程序中不论是否是同一个文件都不能有同名的普通全局变量,否则会有名字冲突,(如果在一个函数体内有与全局变量同名的局部变量,那么局部变量会屏蔽全局变量,除非使用作用域运算符:: );

      2。局部变量中的static变量和普通变更的区别:

           相同点:作用域相同,都是局部于当前所在的函数体内。

           不同点:1)前者是内部连接,后者没有连接,因为普通局部变量是位于堆栈中,连接器不知道它们;

                       2)存储区域不同:前者存放于静态存储区,后者存放于栈中;

                       3)生命期不同:前者是整个程序的生命期,后者是所在函数的生命期(即随它所在的函数调用的结束而结束;

       4)初始化:前者只在函数第一次被调用时初始化,当次调用时的变量值会保存到下次调用时使用,也就只初始化一次;后者则是在每次调用函数时都要重新创建它的存储空间,重新初始化一次,即调用一次函数初始化一次。

以上只是个人理解,欢迎各位对不对之处进行指正,小菜鸟在此先谢啦!

先写这些,太困了,明天继续,连同对对内存分区的理解一同写完。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值