- 存储类类型
- auto
- register
- static
- extern
- mutable
- thread_local
- auto
使用auto常用在下面两种情况
- 声明变量根据初始化表达式自动判断变量类型
- 声明函数函数返回值的占位符
代码示例
#include <iostream>
using namespace std;
//C++存储类
int main(){
// 1.auto类型
auto f = 3.14;//double
auto s = "hello world";
auto x = new auto (8); //int
cout<<f<<"\t"<<sizeof(f)<<endl;
cout<<x<<"\t"<<sizeof(x)<<endl;
cout<<s<<"\t"<<sizeof(s)<<endl;
cout<<s<<"\t"<<strlen(s)<<endl;
return 0;
}
![在这里插入图片描述]
- register存储类
- 备注:不可应用一元的"&"符号,在寄存器内,无实际地址
#include <iostream>
using namespace std;
//C++存储类
int main(){
{
// 变量最大尺寸等于寄存器的大小
register int miles;
miles = 5;
cout<<&miles<<endl;
cout<<miles<<endl;
}
return 0;
}
- static 存储类
- 存储类指示编译器在程序的生命周期内,保证局部变量依然存在,而不需要再每一次进入和离开作用域的时候进行创建和销毁。
- 作用于类上时,导致一个该成员的副本被类的所有对象共享。
#include <iostream>
void test(void);
static int num = 10;
int main()
{
while (num-){
test();
}
return 0;
}
void test(){
static int i = 0;
i++;
std::cout << "变量 i 为 " << i ;
std::cout << " , 变量 count 为 " <<num << std::endl;
}
- extern
- 提供了全局变量的引用,程序文件课件,对于无法初始化的变量会指向之前定义过的存储位置。
- 可以在其他文件得到已定义变量或者函数的引用。
- mutable存储类
- 适用于类对象
- thread_local
- 可以与static或者extern合并
- 只用于数据声明,不能用于声明或者定义