C++|全局变量&局部变量&几个关键字的解释


C++和其他程序设计语言不同,主函数main中定义的变量也是局部的,只有在主函数中才能使用。

在计算机中,内存被分为不同的区域。按照变量在计算机内的储存位置来分,变量可以分为自动变量、静态变量、寄存器变量、外部变量。下面逐个介绍。

  • 自动变量auto

如果不专门声明为其他储存类型,都是自动变量。因此 auto int a; 和 int a; 是等价的。

## C++11中auto被用于自动推断了。

  • 静态变量static

如果不希望该程序其他源文件中的函数使用某全局变量,可以设置为静态变量,保持结构良好。

如果是应用在局部变量,则该变量不再存放在函数对应的帧中,而是存放在全局变量区。函数执行完毕依然存在,在下次函数调用时继续使用原空间中的值。也就是说可以把该变量的信息带到下一次函数调用中。

另:1.未被初始化的静态变量都由系统初始化为0;2.如果程序中既有静态的局部变量也有全局变量,则系统先消亡静态的局部变量,再消亡全局变量。

  • 寄存器变量register

只有局部自动变量才能定义为寄存器变量。系统会把这些变量的值直接存储在CPU的寄存器中,用于代替自动变量。

现在的编译器可以识别出频繁使用的变量,并且会自动进行优化,不需要程序员去进行声明,而是编译器自己决定了。

  • 外部变量extern

外部变量一定是全局变量,如果在定义点前或另一个源文件的函数也要使用,就可以设置为外部变量,使用时相当于告诉编译器此处使用了未见过的变量,将在别处定义。

以上。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM