文章目录
1. C++——数据类型
C++数据类型包括字符型(char)、宽字符型(wchar_t)、整型(int)、浮点型(float)、双浮点型(double)、布尔型(bool),操作系统会根据变量的数据类型来分配内存和决定再保留内存中存储什么。
基本类型可使用一个或多个类型修饰符:有符号型(signed)、无符号行(unsigned)、短(short)、长(long),具体存储数据范围如下:
typedef
typedef type newname;
typedef int feet;
feet distance;
enum
枚举是指将变量的值一一列举出来:
enum color{
red, // 0
green = 5, // 5
blue // 6
}
C++中左值和右值
左值:指向内存位置的表达式称为左值。可以出现在复制号的左边或右边。
右值:存储在内存中某些地址的数值。右值不能对其进行赋值,右值可以出现在赋值号右边,但不能出现载复制号左边。
2. C++——变量作用域
局部变量:在函数或一个代码块内部声明的变量
形式参数:在函数参数的定义中声明的变量
全局变量:在所有函数外部(包括主函数)声明的变量
全局变量的值在程序的整个生命周期内都是有效的。可以被仍和函数访问,一旦声明,在整个程序中都是可用的。
变量重名
局部变量和全局变量可以是相同的,但是在函数内部,局部变量会覆盖全局变量的值。
初始化局部变量和全局变量
定义局部变量时,系统不会对其初始化,必须自己进行初始化。定义全局变量是,系统会自动初始化:
3. C++——const 常量(常量存储区)
常量是固定值,在程序执行期间不会改变,这些固定的值又叫做字面量。
可以是:基本数据类型(整型数字、浮点型数字、字符、字符串、布尔值)。
常量的值在定义后不能修改。
定义常量的方式
使用#define
预处理器:在预编译阶段进行直接替换
使用const
关键字:编译期间进行类型检查和作用域检查
- 定义只读变量、常量
- 修饰函数的参数与返回值
- 修饰函数的定义体(类的成员函数)
- 只读对象(保护作用)
4. C++——限定符
5. C++——存储类
auto
:声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回的占位符register
:定义存储在寄存器中而不是RAM中的局部变量。意味着变量的最大尺寸等于寄存器的大小,因此不能用取地址操作符&
取地址(因为他没有内存位置)。——存储需要快速访问的变量,如计数器。意味着变量可能存储与寄存器中,取决于硬件和实现的限制。static
:编译器在程序的声明周期内保持局部变量的存在,而不需要在每次他进入和离开作用域时进行创建和销毁。static
修饰局部变量可以在函数调用之间保持局部变量的值。可应用于全局变量,会使变量的作用域限制在声明它的文件内。用在类成员数据上时,会导致仅有一个该成员的副本被该类所有对象共享。extern
:用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。mutable
:仅适用于类的对象,允许对象的成员替代常量。mutable成员可以通过const成员函数修改。thread_local
:仅可在其上创建的线程上访问。变量在建立线程时创建,并在销毁线程时销毁。
6. C++——运算符
运算符包括:算术运算符、