C++ 变量
什么是变量?
- 变量就是装数据的盒子
- 变量名就是盒子标签
- 不同的数据,用不同的盒子装
变量 是程序中用于存储数据的基本单元,每个变量都有一个名称(标识符)和特定的数据类型。变量在内存中占用一定的空间,用于存储和操作数据。
关键点:
- 变量需要先声明后使用
- 每个变量都有特定的数据类型
- 变量名需要遵循标识符命名规则
- 变量可以在声明时或声明后赋值
如何声明和初始化变量?
- 声明语法:
数据类型 变量名,比如string name。 - 第一次赋值,称为变量的初始化。
- 可通过
赋值运算符 =改变变量的值
// 先声明后初始化
int age;
age = 25;
// 声明时直接初始化
double price = 99.99;
// 自动类型推导 (C++11)
auto count = 10; // int类型
auto rate = 3.14; // double类型2
3
4
5
6
7
8
9
10
什么是变量的作用域?
变量的作用域决定了其在程序中的可见范围:
局部变量:在函数或代码块内部声明
cppvoid function() { int localVar = 10; // 局部变量 }1
2
3全局变量:在所有函数外部声明
cppint globalVar = 100; // 全局变量 int main() { // 可以访问globalVar }1
2
3
4
5块作用域:在{}内部声明
什么是标识符?
标识符 是程序中用来命名变量、函数、类等程序实体的名称。在C++中,标识符必须遵循以下命名规则:
- 只能由字母、数字、下划线构成
- 必须以字母或下划线开头,不能以数字开头
- 区分大小写(
myVar ≠ myvar) - 不能用C++关键字(
int/for/return等)
什么是常量?
常量是在程序运行期间其值不能被修改的命名实体,而变量的值可以改变。
| 特性 | 常量 | 变量 |
|---|---|---|
| 值可变性 | 不可变 | 可变 |
| 声明关键字 | const | 无特定关键字 |
| 安全性 | 更高(防止意外修改) | 需要更多检查 |
// 变量 - 值可修改
int counter = 0;
counter = 1; // 允许
// 常量 - 值不可修改
const int MAX_SIZE = 100;
// MAX_SIZE = 200; // 编译错误2
3
4
5
6
7
最佳实践:尽可能使用 const 声明不应被修改的值,提高代码安全性和可读性。
什么是字面量?
字面量(Literal) 是直接出现在代码中的 常量值
字面量不需要标识符,其类型和值由书写形式决定。
常见字面量类型:
42 // 十进制
052 // 八进制(前导0)
0x2A // 十六进制
100'000 // C++14数字分隔符2
3
4
3.14
6.02e23 // 科学计数法
1.0f // float类型(后缀f)2
3
'A' // 字符
'\n' // 转义字符
u'猫' // Unicode字符(C++11)2
3
"Hello"
R"(Raw\nString)" // 原始字符串(C++11)2
true
false2
nullptr // C++11空指针字面量的类型可以通过后缀指定,如3.14f(float)
什么是驼峰命名法?
小驼峰式:
- 第一个单词首字母小写,后续单词首字母大写
- 常用于变量名、函数名
int studentCount;
double averageScore;
string firstName;2
3
大驼峰式:
- 每个单词首字母都大写
- 常用于类名、类型名
class StudentInfo;
struct UserData;
enum ColorPalette;2
3
什么是下划线命名法?
也称蛇形命名法
- 所有字母小写,单词间用下划线连接
int student_count;
double average_score;
const int MAX_ATTEMPTS = 3;2
3
变量命名规范有哪些?
- 使用驼峰或下划线命名法
- 变量名应具有描述性,避免使用无意义的单字母(如
a,b) - 常量命名采用全大写格式
- 布尔变量以
is、has、can前缀开头
C++ 数据类型
什么是数据类型?
数据类型 定义了数据的性质、取值范围、存储方式和可执行操作。
类比:就像不同形状的容器(杯子、瓶子、桶),每种容器适合存放不同的内容,有不同的容量和使用方式。
C++基础数据类型有哪些?
C++基础数据类型是语言内置的、用于表示基本值的最小数据单元。
包括 整型、浮点型、字符型、布尔型、空类型(void)。
什么是整型?
整型 是C++中用于存储整数的数据类型,特点是:
- 只能存储整数(无小数部分)
- 运算速度快于浮点型
4种基础整型对比:
| 类型 | 存储大小 | 取值范围 | 示例 |
|---|---|---|---|
short | 2字节 | -32,768 ~ 32,767 | short days = 30; |
int | 4字节 | -2.1亿 ~ 2.1亿 | int price = 1999; |
long | 4/8字节 | -21亿 ~ 21亿 | long distance = 150000; |
long long | 8字节 | -9.2×10¹⁸ ~ 9.2×10¹⁸ | long long stars = 1e18; |
实际大小与编译器和平台相关
什么是浮点型?
浮点型是C++中用于存储小数的数据类型,特点是:
- 可以存储带小数点的数值
- 采用科学计数法表示
2种浮点型对比:
| 类型 | 存储大小 | 精度 | 示例 |
|---|---|---|---|
float | 4字节 | 6-7位有效数字 | float pi = 3.14f; |
double | 8字节 | 15-16位有效数字 | double price = 9.99; |
什么是字符型?
字符型是C++中用于存储单个字符的数据类型,特点是:
- 存储单个ASCII/Unicode字符
- 实际存储的是字符对应的编码值
- 用单引号
''表示字符字面量
主要字符类型:
| 类型 | 存储大小 | 存储范围 | 示例 |
|---|---|---|---|
char | 1字节 | -128~127 或 0~255 | char grade = 'A'; |
wchar_t | 2/4字节 | 更大字符集 | wchar_t ch = L'中'; |
char16_t(C++11) | 2字节 | Unicode字符 | char16_t c = u'字'; |
char32_t(C++11) | 4字节 | Unicode字符 | char32_t c = U'🍎'; |
什么是布尔类型?
布尔类型是编程中用来表示 真 或 假 的数据类型。
关键特性
- 只有两个可能值:
true(真)或false(假) - 常用于条件判断和逻辑运算
- 存储大小通常为1字节
- 任何非零值转换为
true,零值转换为false - 输出时
true显示为1,false显示为0
什么是空类型?
空类型是C++中的特殊数据类型,特点是:
- 用
void关键字表示 - 不存储任何实际数据
- 不能声明
void类型变量,只能在特定场景使用
如何确定数据类型的大小?
使用sizeof运算符获取类型或变量的大小:
cout << sizeof(bool) << endl;
cout << sizeof(int) << endl;
cout << sizeof(double) << endl;2
3
注意:大小可能因编译器和平台而异
什么是类型转换?
类型转换是将一种数据类型转换为另一种类型:
隐式转换(自动):
cppint i = 3.14; // 3.14被截断为31显式转换(强制):
cppdouble d = (double)42 / 5;1