C++变量的储存类别及特点

C++语言中定义了4种储存类别,分别是auto变量,static变量,register变量。

  • 静态变量通常是在变量定义时就分配固定的存储单元并一直保持不变,直至整个程序结束,他们存储在静态存储区中。
  • 动态变量是在程序执行过程中使用它时才分配存储单元,使用完毕立即将存储单元释放。

1、auto变量

自动变量存储类型是C++语言程序中默认的存储类型。函数内未加存储类型说明的变量均视为自动变量,也就是说自动变量可以省去关键字auto。

自动变量的特点:

  • 自动变量的作用于仅限于定义该变量的个体内。
  • 自动变量属于动态存储方式,变量的内存分配在栈中,当函数调用结束后,自动变量的值会被释放。
  • 由于自动变量的作用于和生存期都局限于定义他的个体内(函数或复合语句内),因此不同的个体中允许使用同名的变量而不会混淆。

2、static变量

在声明变量前加关键字static,t可以将变量声明为静态变量。静态局部变量的值在函数调用结束后不会消失,静态全局变量只能在本源文件中使用。

static变量特点

  • 静态变量在函数内蒂尼,在程序退出时释放,在整个程序运行期间不释放,也就是说它的生命周期为整个程序
  • 静态变量的作用域与自动变量相同,在函数内定义就在函数内使用,尽管改变量没有被释放,但不能使用它,如再次定义它的函数时,它又可以继续使用。
  • 编译器会为静态局部变量赋予0值(今天变量和全局变量,如果没有显式初始化,都会被初始化为0)

3、rejister变量

通常变量的值存放在内存中,当对一个变量频繁读写时,需要反复访问内存储器,华为大梁的存取时间。为了提高效率,C++语言可以将变量声明为寄存器变量,这种变量将局部变量的值直接存放在cpu的寄存器中,使用时不用访问内存,而直接从寄存器中读写。寄存器变量的说明符号为 register。

  • 寄存器变量属于动态存储方式。凡是需要采用静态存方式的量不能定义为寄存器变量。
  • 编译程序会自动决定哪个变量使用寄存器存储。register起到程序优化的作用。

4、extern 变量

在一个源文件中定义的变量和函数只能被本文件中的函数调用,一个C++程序中会有许多源文件,如果使用非本源文件的全局变量呢?C++提供了extern关键字来解决这个问题。在使用其他源文件的全局变量时,只需要在本源文件中使用extern来生命变量。

编译系统不再为全局变量分配内存,而是改变非本源区全局变量的值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章