1.auto自动变量
auto int a = 0; 会报错!!!
出现错误提示:"auto”不能与任何其他类型说明符组合,因为新版C++定义auto不能和任何类型进行组合。
!!!如果一个变量不加关键字加以声明,那就是自动。
2,static 静态变量。
有希望函数调用结束后,其中变量值不会消失使用静态变量即可。下次调用函数时,该变量调用上次函数调用结束的值。
例如
#include<iostream>
using namespace std;
int fun(int);
int main() {
int n = 5;
for (int i = 1; i <= n; i++) {
cout << i << "!=" << fun(i) << endl;
}
return 0;
}
int fun(int i) {
/*auto int a = 0; 会报错!!!*/
static int n = 1;
n = i * n;
return n;
}
运行结果为:
1!=1
2!=2
3!=6
4!=24
5!=120
静态变量的一些性质:为赋初始值,默认为0;而auto默认为随机,且会报错。
register寄存器变量
一些多次使用的变量,为了提高执行效率,c++允许将局部变量的值存放在CPU的寄存器中,不必再从内存调用。
extern声明的外部变量
他的作用域就是从变量定义处开始,到本程序文件的末尾,在此作用域内,全局变量可以为本文件中各个函数所引用。!!!!编译时全局变量将会分配在静态存储区。
注意事项:含有多个文件的程序,如果在不同文件中定义相同的变量,链接时会报错,所以把一个变量extern来声明为外部变量。
--------------------------------------------------------------------------------------------------------------------------------
补充:
1.自动变量 寄存器变量 为动态存储;静态局部变量,静态外部变量,外部变量都为静态存储。
2.内部函数 例如:static int func(int a)使函数只局限于本文件,如果在不同的文件中有同名的内部函数,互不干扰。简称为局部化;
外部函数 例:extern int func(int a)表示为外部函数可以供其他文件调用。