一、数据类型(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)
- signed 和 unsigned:修饰整数类型,分别表示带符号和无符号整数。
int
默认是signed
。 - short 和 long:修饰整数类型,表示占用更少或更多字节。
示例:
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++关键字(如
int
、return
等) - 区分大小写(
value
和Value
是不同变量) - 建议使用有意义且符合项目规范的命名风格
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++内置多种基本数据类型,满足不同存储需求与计算精度。
- 变量是存储数据的基本单元,声明时必须指定数据类型,推荐立即初始化。
- 理解变量的作用域与存储类型,有助于编写高效且安全的代码。
const
和constexpr
关键字提高程序的安全性和性能。- 引用和指针提供强大的内存操作能力,是理解C++核心特性的关键。