一、常量定义
(1) 使用 #define 预处理器。
例: #define LENGTH 10
(2) 使用 const 关键字。
例: const int LENGTH = 10;
注意:常量定义时要全部大写!!!
二、C++存储类
(1)auto 存储类
使用情景:
<1> 声明变量 : 根据初始化表达式自动推断该变量的类型。
例:根据初始化表达式自动推断被声明的变量
auto f=3.14; //double
auto s("hello"); //const char*
auto z = new auto(9); // int*
auto x1 = 5, x2 = 5.0, x3='r';//错误,必须是初始化为同一类型
<2> 声明函数 : 作为函数返回值的占位符。
(2)register 存储类
用于定义存储在寄存器中而不是 RAM 中的局部变量。
(3)static 存储类
static 存储类,指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。
也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
人话:只定义一次。。。
(4)extern 存储类
<1> 用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。
<2> 用来在另一个文件中声明一个全局变量或函数。
例:如两个文件:
第一个文件:main.cpp
#include <iostream>
int count ;
extern void write_extern();
int main()
{
count = 5;
write_extern();
}
第二个文件:support.cpp
#include <iostream>
extern int count;
void write_extern(void)
{
std::cout << "Count is " << count << std::endl;
}
输出结果:
Count is 5
第一个文件中的 extern 关键字用于声明在第二个文件 support.cpp 中定义的 函数。
第二个文件中的 extern 关键字用于声明已经在第一个文件 main.cpp 中定义的 count 。
(5)thread_local 存储类
<1> 使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问。
<2> 变量在创建线程时创建,并在销毁线程时销毁。
<3> 每个线程都有其自己的变量副本。