变量

在C++中,变量是用来存储数据的命名存储单元。

  1. 变量声明和定义
    • 声明:告诉编译器变量的名称和类型,但不分配存储空间(通常用extern声明)。
    • 定义:为变量分配存储空间并初始化
      1
      2
      3
      4
      5
      // 声明
      extern int x;

      // 定义
      int x = 10;
  2. 变量的命名规则
    • 必须以字母或下划线_开头。
    • 只能包含字母、数字和下划线。
    • 不能是C++的关键字(如int、class等)。
    • 区分大小写(var和Var是不同的变量)。
  3. 变量的分类
    (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:为类型定义别名。
  4. 变量的存储类型
    通过关键字调整存储、作用域和生命周期:

    • auto:自动推导变量类型(C++11)。
    • register:建议变量存储在寄存器(现代编译器忽略)。
    • static:静态存储期。
    • extern:声明外部变量。
    • mutable:允许修改const对象的成员。
    • thread_local:线程局部变量。
  5. 变量的初始化
    • 显式初始化:在定义时赋初值。
    • 默认初始化:
      • 局部变量:未初始化时包含垃圾值。
      • 全局变量和静态变量:会被默认初始化为0或对应类型的默认值。

数据类型

C++中的数据类型用于定义变量存储的类型和大小,帮助程序更高效地管理内存和操作数据。C++提供了多种基本数据类型,包括整型、浮点型、字符型、布尔型等。此外,C++还支持用户自定义数据类型,如结构体和类。

以下是C++中常用的基本数据类型:

  1. 整型:整型用于存储整数,包括有符号整型和无符号整型。常见的整型有int、short、long、long long等。其中,int表示整型,short表示短整型,long表示长整型,long long表示长长整型。无符号整型在前面加上unsigned关键字,如unsigned int、unsigned short等。
  2. 浮点型:浮点型用于存储小数,包括单精度浮点型float和双精度浮点型double。
  3. 字符型:字符型用于存储单个字符,包括char类型。char类型可以存储一个字符,如字母、数字、符号等。
  4. 布尔型:布尔型用于存储布尔值,包括bool类型。bool类型可以存储true和false两个值。
  5. 字符串型:字符串型用于存储字符串,包括char类型的数组。可以使用std::string类来表示字符串。
  6. 指针型:指针型用于存储变量的地址,包括int、float、char*等。
  7. 数组型:数组型用于存储一组相同类型的数据,包括int[]、float[]、char[]等。
  8. 枚举型:枚举型用于定义一组命名的常量,包括enum关键字。
  9. 结构体型:结构体型用于定义一组不同类型的数据,包括struct关键字。
  10. typedef:typedef用于为已有的数据类型定义一个新的名字,方便使用。
  11. 类:类用于定义一组数据和操作这些数据
  12. 空类型(Void Type):用于函数不返回任何值的情况。

常量

在C++中,常量是一种特殊的变量,其值在程序执行期间不能被修改。常量可以用于存储不会改变的值,如数学常数π、物理常数等。使用常量可以提高代码的可读性和可维护性,因为它们使代码中的硬编码值更加明确。
C++中有几种声明常量的方式:

  1. 使用const关键字:const关键字可以用于声明常量,其语法如下:
    1
    const 数据类型 常量名 = 值;
  2. 使用#define预处理指令:#define预处理指令可以用于定义宏,宏是一种常量的替代方式,其语法如下:
    1
    #define 宏名 值
  3. 使用constexpr关键字:constexpr关键字可以用于声明常量表达式,常量表达式是在编译时就可以确定其值的表达式,其语法如下:
    1
    constexpr 数据类型 常量名 = 值;
  4. 使用枚举类型:枚举类型可以用于定义一组常量,其语法如下:
    1
    2
    enum 枚举类型名 {	
    }