一、数据类型(Data Types)

C++是一门强类型语言,所有变量在使用前必须声明其数据类型。数据类型决定了变量所占用的内存大小、存储的取值范围以及支持的操作方式。

1. 基本内置数据类型

类型说明大小(通常,平台相关)取值范围(示例)
char字符类型,占1字节1字节-128 ~ 127 (signed char

) 或 0 ~ 255 (unsigned char

)
bool布尔类型,取值true

false
1字节true

/ false
int整数类型,平台相关大小通常4字节-2,147,483,648 ~ 2,147,483,647(32位系统示例)
short短整型通常2字节-32,768 ~ 32,767
long长整型4或8字节,依平台而定平台相关
long long更长整型(C++11起支持)通常8字节-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float单精度浮点数4字节大约 ±3.4E±38,约7位有效数字
double双精度浮点数8字节大约 ±1.7E±308,约15位有效数字
long double扩展精度浮点数8字节或更多,依平台相关更高精度
void无类型,常用于函数无返回值

2. 修饰符(Modifiers)

  • signedunsigned:修饰整数类型,分别表示带符号和无符号整数。int默认是signed
  • shortlong:修饰整数类型,表示占用更少或更多字节。

示例:

unsigned int u = 100;    // 无符号整数
signed short s = -10;    // 有符号短整型
long long bigNum = 123456789012345;

3. 枚举类型(enum)

枚举用于定义一组命名的整型常量,提升代码可读性与安全性。

示例:

enum Color { Red, Green, Blue };
Color c = Red;

二、变量(Variables)

变量是程序运行时用于存储数据的命名内存单元。

1. 变量声明

变量声明时必须指定数据类型。

示例:

int age;
double salary;
char grade;

2. 变量初始化

推荐声明时立即初始化,避免未定义行为。

示例:

int count = 0;
double pi = 3.14159;
char letter = 'A';

3. 变量赋值

变量声明后可以多次赋值。

count = 10;
pi = 3.14;
letter = 'B';

4. 变量命名规则

  • 由字母(A-Z,a-z)、数字(0-9)、下划线(_)组成
  • 不能以数字开头
  • 避免使用C++关键字(如intreturn等)
  • 区分大小写(valueValue是不同变量)
  • 建议使用有意义且符合项目规范的命名风格

5. 作用域(Scope)

变量的作用域决定其可访问的代码范围。

  • 局部变量:在函数或代码块内声明,仅在该范围内有效

  • 全局变量:在所有函数外部声明,整个程序范围内有效

  • 静态变量(static)

  • 局部静态变量:在函数内声明,生命周期贯穿整个程序,但作用域局限于函数内部,函数多次调用共享该变量

  • 全局静态变量:限制变量在声明的文件内可见,防止命名冲突

示例:

int globalVar;  // 全局变量
 
void func() {
    int localVar = 10;         // 局部变量
    static int staticVar = 0;  // 局部静态变量,保持状态
    staticVar++;
}

6. 存储类型(Storage Class)

  • auto:默认局部变量存储类型(C++11后不再强调)
  • register:建议将变量存储在CPU寄存器,已被废弃,不建议使用
  • static:静态存储期,生命周期贯穿程序执行
  • extern:声明外部变量,定义在其他文件
  • mutable:允许在const对象中修改的成员变量(类中使用)

三、特殊数据类型及用法

1. const变量

声明常量,值不可修改,增强代码安全性。

const int maxSize = 100;

2. constexpr

用于声明编译时常量,支持编译器优化和模板元编程。

constexpr int square(int x) { return x * x; }
constexpr int val = square(5);  // 编译期计算

3. 引用类型(References)

引用是已存在变量的别名,使用时与变量等价。

int a = 10;
int& ref = a;  // ref是a的引用
ref = 20;      // 修改ref即修改a

4. 指针类型(Pointers)

指针存储变量地址,支持间接访问和操作内存。

int b = 30;
int* p = &b;    // p指向b的地址
*p = 40;        // 通过p修改b的值

四、示例代码汇总

#include <iostream>
 
int globalCount = 100;  // 全局变量
 
int main() {
    const double PI = 3.14159;  // 常量
    int age = 25;               // 初始化变量
    int& ageRef = age;          // age的引用
    
    std::cout << "Age: " << age << std::endl;
    ageRef = 30;
    std::cout << "Updated Age: " << age << std::endl;
    
    int* ptr = &age;            // 指针
    *ptr = 35;
    std::cout << "Age via pointer: " << age << std::endl;
 
    static int staticVar = 0;   // 静态变量
    staticVar++;
    std::cout << "Static variable: " << staticVar << std::endl;
 
    return 0;
}

五、总结

  • C++内置多种基本数据类型,满足不同存储需求与计算精度。
  • 变量是存储数据的基本单元,声明时必须指定数据类型,推荐立即初始化。
  • 理解变量的作用域与存储类型,有助于编写高效且安全的代码。
  • constconstexpr关键字提高程序的安全性和性能。
  • 引用和指针提供强大的内存操作能力,是理解C++核心特性的关键。