c++中变量的存储种类

1 全局变量

在所有函数之外定义的变量是全局变量,它的生命周期直到程序结束。程序中的所有部分都对该变量可见。通过extern关键字,甚至外部文件也可以访问该变量。

2 局部变量

局部变量在函数体内声明,其作用域只在该函数体内。其中局部变量有一下2中情况:

(1)寄存器变量

在声明局部变量的时候,使用关键字register可以暗示编译器"应该尽可能快的访问该变量",但这仅仅是暗示,编译器并不一定会将该变量放入寄存器中,甚至也不一定保证提高访问速度。而且,对于register变量还有限制,不能获取register变量的地址或者引用,然而可以再一个函数的参数列表中使用register变量作为形参。最好避免使用register参数。

(2) static变量

将函数内的局部变量声明成static,那么局部变量的生命周期就不在是该函数被调用的时刻,而是整个程序的整个生命期里都存在,并且只在函数第一次调用的时候初始化一次。它与全局变量的区别是,static变量在其存在的函数外部不可见。

对于static关键字,它还有第二层意思:"在文件外部不可访问这个名字",因此,当static应用于函数名或者所有函数外部变量时,其他外部文件无法访问它们,即使用extern关键字也一样。

3 常量

c++中有命名常量的概念,它和变量一样,只是值不能改变,它通过关键字const声明。所有的内建数据类型和用户自定义类型都可以声明成const。

posted @ 2013-03-30 02:49  chaoguo1234  阅读(581)  评论(0编辑  收藏  举报