auto 存储类
自 C++ 11 以来,auto 关键字用于两种情况:声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。
auto f=3.14; //double
auto s("hello"); //constchar*
auto z = new auto(9); // int*
auto x1 = 5, x2 = 5.0, x3='r';//错误,必须是初始化为同一类型
static 存储类
使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
static int a=3;
int main(){
……
}
虽然在file1.cpp文件中声明全局变量a,但是因为加了static是的作用域为本文件,故file2.cpp文件中a不能使用file1.cpp文件中的变量。
使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
int fac(int f){
//相当于只起到一次初始化作用
static int f=1;
f=f+1;
return f;
}
第一次调用时f返回的结果是2,再次调用时f初始值是2返回值是3;
extern 存储类
当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。可以这么理解,extern 是用来在另一个文件中声明一个全局变量或函数。
实例
第一个文件:main.cpp
#include <iostream>
int count ;
//引用第二个文件的write_extern()函数
extern void write_extern();
int main(){
count = 5;
write_extern();
}
第二个文件:support.cpp
#include <iostream>
//引用第一个文件的变量count
extern int count;
void write_extern(void){
std::cout << "Count is " << count << std::endl;
}