C++变量、常量
变量
在C++中,变量是用来存储数据的命名存储单元。
- 变量声明和定义
- 声明:告诉编译器变量的名称和类型,但不分配存储空间(通常用extern声明)。
- 定义:为变量分配存储空间并初始化
1
2
3
4
5// 声明
extern int x;
// 定义
int x = 10;
- 变量的命名规则
- 必须以字母或下划线_开头。
- 只能包含字母、数字和下划线。
- 不能是C++的关键字(如int、class等)。
- 区分大小写(var和Var是不同的变量)。
变量的分类
(1)按作用域分类- 局部变量:定义在函数或块中,只能在其所在作用域内使用。
- 全局变量:定义在所有函数之外,作用域为整个程序。
静态变量:用static修饰,局部变量的作用域仍在函数内,但生命周期贯穿整个程序。
(2)按存储类型分类
- 自动变量(Automatic Variables):默认存储期,生命周期随作用域结束。
- 静态变量(Static Variables):用static修饰,生命周期贯穿程序。
- 外部变量(External Variables):用extern声明,在其他文件中定义。
线程局部变量(Thread-local Variables):用thread_local修饰,每个线程有独立副本。
(3)按数据类型分类
基本数据类型:
- 整数类型:int、short、long、long long。
- 浮点类型:float、double、long double。
- 字符类型:char。
- 布尔类型:bool。
派生数据类型:
- 数组:int arr[5];
- 指针:int* ptr = &a;
- 引用:int& ref = a;
- 函数:返回值类型 + 参数列表。
- 用户自定义类型:
- 枚举类型(enum):一组命名常量。
- 类类型(class):面向对象中的核心。
- 结构体(struct):数据的集合。
- 联合体(union):共享内存。
- typedef:为类型定义别名。
变量的存储类型
通过关键字调整存储、作用域和生命周期:- auto:自动推导变量类型(C++11)。
- register:建议变量存储在寄存器(现代编译器忽略)。
- static:静态存储期。
- extern:声明外部变量。
- mutable:允许修改const对象的成员。
- thread_local:线程局部变量。
- 变量的初始化
- 显式初始化:在定义时赋初值。
- 默认初始化:
- 局部变量:未初始化时包含垃圾值。
- 全局变量和静态变量:会被默认初始化为0或对应类型的默认值。
数据类型
C++中的数据类型用于定义变量存储的类型和大小,帮助程序更高效地管理内存和操作数据。C++提供了多种基本数据类型,包括整型、浮点型、字符型、布尔型等。此外,C++还支持用户自定义数据类型,如结构体和类。
以下是C++中常用的基本数据类型:
- 整型:整型用于存储整数,包括有符号整型和无符号整型。常见的整型有int、short、long、long long等。其中,int表示整型,short表示短整型,long表示长整型,long long表示长长整型。无符号整型在前面加上unsigned关键字,如unsigned int、unsigned short等。
- 浮点型:浮点型用于存储小数,包括单精度浮点型float和双精度浮点型double。
- 字符型:字符型用于存储单个字符,包括char类型。char类型可以存储一个字符,如字母、数字、符号等。
- 布尔型:布尔型用于存储布尔值,包括bool类型。bool类型可以存储true和false两个值。
- 字符串型:字符串型用于存储字符串,包括char类型的数组。可以使用std::string类来表示字符串。
- 指针型:指针型用于存储变量的地址,包括int、float、char*等。
- 数组型:数组型用于存储一组相同类型的数据,包括int[]、float[]、char[]等。
- 枚举型:枚举型用于定义一组命名的常量,包括enum关键字。
- 结构体型:结构体型用于定义一组不同类型的数据,包括struct关键字。
- typedef:typedef用于为已有的数据类型定义一个新的名字,方便使用。
- 类:类用于定义一组数据和操作这些数据
- 空类型(Void Type):用于函数不返回任何值的情况。
常量
在C++中,常量是一种特殊的变量,其值在程序执行期间不能被修改。常量可以用于存储不会改变的值,如数学常数π、物理常数等。使用常量可以提高代码的可读性和可维护性,因为它们使代码中的硬编码值更加明确。
C++中有几种声明常量的方式:
- 使用const关键字:const关键字可以用于声明常量,其语法如下:
1
const 数据类型 常量名 = 值;
- 使用#define预处理指令:#define预处理指令可以用于定义宏,宏是一种常量的替代方式,其语法如下:
1
- 使用constexpr关键字:constexpr关键字可以用于声明常量表达式,常量表达式是在编译时就可以确定其值的表达式,其语法如下:
1
constexpr 数据类型 常量名 = 值;
- 使用枚举类型:枚举类型可以用于定义一组常量,其语法如下:
1
2enum 枚举类型名 {
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 十柒!
评论