变量定义与声明

在C++中,变量必须在使用前定义或声明。定义会分配内存,而声明仅告知编译器变量的存在(通常用于头文件)。

  • 定义语法数据类型 变量名 = 初始值;
    int age = 25;       // 定义并初始化
    double salary;      // 定义未初始化(值不确定)
    

  • 声明语法(使用extern):
    extern int globalVar; // 声明变量(定义在其他文件中)
    

基本数据类型

C++内置基础数据类型包括:

  • 整型shortintlonglong long(可配合signed/unsigned修饰)。
  • 浮点型floatdoublelong double
  • 字符型char(1字节)、wchar_t(宽字符)。
  • 布尔型bool(值为truefalse)。

变量作用域

  • 局部变量:在函数或代码块内定义,仅在其范围内有效。
    void foo() {
        int x = 10; // 局部变量
    }
    

  • 全局变量:在函数外定义,整个程序可见(需谨慎使用)。
    int global = 42; // 全局变量
    

常量与const关键字

使用const定义不可修改的变量,必须在定义时初始化。

const double PI = 3.14159; // 常量
constexpr int SIZE = 100;  // 编译时常量(C++11引入)

类型推断(auto

C++11引入auto关键字,编译器自动推断变量类型。

auto num = 42;      // 推断为int
auto name = "Alice"; // 推断为const char*

静态变量(static

  • 局部静态变量:生命周期延长至程序结束,作用域不变。
    void counter() {
        static int count = 0; // 仅初始化一次
        count++;
    }
    

  • 全局静态变量:限制作用域为当前文件(避免命名冲突)。

引用与指针

  • 引用:变量的别名,必须初始化且不可重新绑定。
    int a = 10;
    int& ref = a; // ref是a的引用
    

  • 指针:存储内存地址,可修改指向。
    int* ptr = &a; // ptr指向a的地址
    *ptr = 20;     // 通过指针修改a的值
    

类型转换

C++支持显式类型转换:

  • 静态转换static_cast):用于相关类型(如整型转浮点)。
    double d = static_cast<double>(5);
    

  • 动态转换dynamic_cast):用于多态类层次。
  • 常量转换const_cast):移除const属性。
  • 重新解释转换reinterpret_cast):低层不安全转换。

变量命名规范

  • 遵循驼峰命名法(如studentName)或下划线命名法(如max_value)。
  • 避免使用保留关键字(如intclass)。
  • 命名应具有描述性(如userCount而非uc)。

初始化方式(C++11起)

  • 列表初始化:使用花括号{},避免窄化转换。
    int x{10};    // 直接初始化
    int y = {20}; // 拷贝初始化
    

  • 默认初始化:对类类型调用默认构造函数。
    std::string s; // 默认初始化为空字符串
    

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐