C++变量的存储类别
存储空间分类
内存中用户区的存储空间只要分为三部分:程序区、静态存储区和动态存储区,如下图所示。
变量的存储类别
变量的存储类别只要分为如下4类:
类别 | 作用 |
---|---|
auto | 自动变量,放在动态存储区,自动识别变量类型,系统默认类型 |
static | 静态局部变量,函数结束后变量不释放,保留上次调用的值 |
register | 寄存器变量,将变量的值存放在CPU寄存器中,提高效率 |
extern | 外部变量,扩展全局变量的作用域 |
下面来看具体程序例子:
test1.cpp
#include <iostream>;
int d = 5;
test2.cpp
#include <iostream>;
using namespace std;
int func(int n)
{
static int a = 1;
auto b = 2;
register int c = 3;
extern int d;
cout << "a=" << a << " ";
cout << "b=" << b << " ";
cout << "c=" << c << " ";
cout << "d=" << d << " ";
a = a * n + (++b) + (c++) + (--d);
return a ;
}
int main()
{
int num = 2;
cout << "函数结果:" << func(num) << endl;
cout << "函数结果:" << func(num) << endl;
}
运行test2.cpp输出:
可以看到,声名的static和extern变量都不随函数的结束而释放。
注意:
- auto能够自动识别变量类型,函数内的变量不加任何关键词时默认为auto。
- static加在外部变量前面使得变量只能在当前文件使用,防止被其他文件引用。