C++变量基础概念

变量是程序中的基本存储单元,用于存储数据。在C++中,变量需明确类型、名称和作用域。

声明与定义

  • 声明:告知编译器变量的存在(extern int x;)。
  • 定义:分配内存并初始化(int x = 10;)。

命名规则

  • 由字母、数字、下划线组成,不能以数字开头。
  • 区分大小写,避免使用保留关键字(如intclass)。

变量类型

C++变量分为基本类型和派生类型:

基本数据类型

  • 整型:int(4字节)、short(2字节)、long(8字节)。
  • 浮点型:float(4字节)、double(8字节)。
  • 字符型:char(1字节),存储ASCII值。
  • 布尔型:bool,值为truefalse

派生数据类型

  • 数组:int arr[5];
  • 指针:int* p = &x;
  • 引用:int& ref = x;(别名,必须初始化)。

变量作用域

  • 局部变量:函数或块内定义,仅在其范围内有效。
    void func() {
        int local = 5; // 局部变量
    }
    

  • 全局变量:函数外定义,整个文件可见。
    int global = 10; // 全局变量
    int main() { /* ... */ }
    

变量存储类别

  • 自动存储(auto):默认方式,函数结束时释放(局部变量)。
  • 静态存储(static):生命周期持续到程序结束。
    void counter() {
        static int count = 0; // 仅初始化一次
        count++;
    }
    

  • 动态存储(new/delete):手动管理内存。
    int* ptr = new int(10); // 动态分配
    delete ptr;            // 释放内存
    

常量与修饰符

  • const:不可修改的常量。
    const int PI = 3.14;
    

  • constexpr:编译时常量(C++11)。
    constexpr int SIZE = 100;
    

  • volatile:防止编译器优化(用于硬件寄存器等)。

类型推断与自动声明(C++11)

  • auto:自动推断变量类型。
    auto x = 5;      // int
    auto y = 3.14;   // double
    

  • decltype:推断表达式类型。
    int a = 10;
    decltype(a) b = 20; // b的类型与a相同(int)
    

初始化方式

  • 拷贝初始化int x = 10;
  • 直接初始化int x(10);
  • 列表初始化(C++11)int x{10};(避免窄化转换)。

作用域解析运算符(::)

访问全局变量(当与局部变量同名时)。

int x = 100;
int main() {
    int x = 50;
    cout << ::x; // 输出全局变量100
}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐