Appearance
C++ 基本语法
C++ 有一套特定的语法规则,了解这些规则是编写正确 C++ 程序的基础。在本章节中,我们将介绍 C++ 的基本语法元素,包括语句结构、标识符命名规则等。
1. 语句和分号
在 C++ 中,语句是执行特定操作的指令,每个语句都必须以分号(;)结尾。分号是语句的结束标志,告诉编译器一个语句已经结束。
例如:
cpp
int a = 10; // 赋值语句
std::cout << "Hello!" << std::endl; // 输出语句
return 0; // 返回语句2. 标识符
标识符是用于命名变量、函数、类等的名称。在 C++ 中,标识符的命名规则如下:
- 只能包含字母、数字和下划线(
_) - 不能以数字开头
- 区分大小写(如
age和Age是不同的标识符) - 不能使用 C++ 的关键字(如
int、if、for等)
2.1 示例
合法的标识符:
name_countstudent_ageMAX_VALUE
非法的标识符:
123abc(以数字开头)student-age(包含连字符)int(使用关键字)my name(包含空格)
2.2 命名规范
虽然 C++ 没有强制要求,但为了代码的可读性,通常遵循以下命名规范:
- 变量和函数:使用小写字母,单词之间用下划线分隔(如
student_name) - 类名:使用大驼峰命名法(如
Student) - 常量:使用大写字母,单词之间用下划线分隔(如
MAX_SIZE)
3. 关键字
关键字是 C++ 中预定义的、具有特殊含义的单词,不能用作标识符。以下是 C++ 的常用关键字:
| 关键字 | 说明 |
|---|---|
asm | 内嵌汇编 |
auto | 自动类型推导 |
bool | 布尔类型 |
break | 跳出循环或 switch 语句 |
case | switch 语句的分支 |
catch | 异常捕获 |
char | 字符类型 |
class | 类定义 |
const | 常量 |
const_cast | 常量转换 |
continue | 继续循环的下一次迭代 |
default | switch 语句的默认分支 |
delete | 释放内存 |
do | do-while 循环的开始 |
double | 双精度浮点类型 |
dynamic_cast | 动态类型转换 |
else | if 语句的否则分支 |
enum | 枚举类型 |
explicit | 显式构造函数 |
extern | 外部变量声明 |
false | 布尔值 false |
float | 单精度浮点类型 |
for | for 循环 |
friend | 友元 |
goto | 无条件跳转 |
if | 条件语句 |
inline | 内联函数 |
int | 整数类型 |
long | 长整数类型 |
mutable | 可变成员 |
namespace | 命名空间 |
new | 分配内存 |
operator | 运算符重载 |
private | 私有访问 |
protected | 受保护访问 |
public | 公共访问 |
register | 寄存器变量 |
reinterpret_cast | 重新解释转换 |
return | 函数返回 |
short | 短整数类型 |
signed | 有符号类型 |
sizeof | 计算数据类型大小 |
static | 静态变量 |
static_cast | 静态类型转换 |
struct | 结构体类型 |
switch | 多分支选择语句 |
template | 模板 |
this | 指向当前对象的指针 |
throw | 抛出异常 |
true | 布尔值 true |
try | 异常处理 |
typedef | 类型定义 |
typeid | 类型信息 |
typename | 类型名 |
union | 共用体类型 |
unsigned | 无符号类型 |
using | 使用声明 |
virtual | 虚函数 |
void | 空类型 |
volatile | volatile 变量 |
wchar_t | 宽字符类型 |
while | while 循环 |
4. 空白字符
C++ 中的空白字符(空格、制表符、换行符)通常被编译器忽略,除非它们出现在字符串字面量中。空白字符用于分隔代码元素,提高代码的可读性。
例如:
cpp
// 以下两种写法是等效的
int a=10;
int a = 10;
// 以下写法更易读
int calculate_area(int length, int width) {
return length * width;
}5. 预处理指令
预处理指令是以#开头的特殊指令,在编译之前由预处理器处理。常见的预处理指令包括:
#include:包含头文件#define:定义常量或宏#ifdef/#ifndef/#endif:条件编译
例如:
cpp
#include <iostream> // 包含标准输入输出头文件
#define PI 3.14159 // 定义常量 PI
int main() {
double radius = 5.0;
double area = PI * radius * radius;
std::cout << "Area: " << area << std::endl;
return 0;
}6. 代码块
代码块是由花括号{}包围的一组语句,用于将多条语句组合成一个逻辑单元。代码块通常用于函数体、条件语句、循环语句等。
例如:
cpp
int main() {
// 代码块开始
int a = 10;
int b = 20;
int sum = a + b;
std::cout << "Sum: " << sum << std::endl;
// 代码块结束
return 0;
}7. 转义字符
转义字符是以反斜杠\开头的特殊字符,用于表示一些无法直接输入的字符。常见的转义字符包括:
| 转义字符 | 含义 |
|---|---|
\n | 换行 |
\t | 制表符(Tab) |
\r | 回车 |
\b | 退格 |
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
例如:
cpp
std::cout << "Hello\nWorld!" << std::endl; // 输出 Hello 后换行,再输出 World!
std::cout << "Name:\tJohn" << std::endl; // 输出 Name: 后加一个制表符,再输出 John
std::cout << "He said, \"Hello!\"" << std::endl; // 输出带双引号的字符串8. 命名空间
命名空间用于组织代码,避免命名冲突。使用namespace关键字定义命名空间,使用::运算符访问命名空间中的成员。
例如:
cpp
#include <iostream>
namespace MyNamespace {
int value = 100;
void print() {
std::cout << "Value: " << value << std::endl;
}
}
int main() {
// 使用命名空间限定符访问
std::cout << MyNamespace::value << std::endl;
MyNamespace::print();
// 使用 using 声明
using MyNamespace::value;
std::cout << value << std::endl;
// 使用 using 指令
using namespace MyNamespace;
print();
return 0;
}9. main 函数
每个 C++ 程序都必须有一个main函数,它是程序的入口点。main函数有以下两种形式:
cpp
// 无参数形式
int main() {
// 程序代码
return 0;
}
// 带参数形式
int main(int argc, char* argv[]) {
// argc: 参数个数
// argv: 参数数组
return 0;
}10. 示例:综合运用
现在,让我们看一个综合运用上述语法元素的例子:
cpp
#include <iostream>
// 定义常量
#define MAX_STUDENTS 50
// 命名空间
namespace School {
struct Student {
char name[50];
int id;
float gpa;
};
}
// 函数声明
int calculate_average(int scores[], int count);
int main() {
// 定义变量
int student_scores[MAX_STUDENTS];
int student_count = 5;
// 输入分数
student_scores[0] = 85;
student_scores[1] = 92;
student_scores[2] = 78;
student_scores[3] = 95;
student_scores[4] = 88;
// 计算平均分
int average = calculate_average(student_scores, student_count);
// 输出结果
std::cout << "学生人数: " << student_count << std::endl;
std::cout << "平均分数: " << average << std::endl;
// 使用命名空间
School::Student student = {"John Doe", 12345, 3.8};
std::cout << "学生姓名: " << student.name << std::endl;
std::cout << "学生 ID: " << student.id << std::endl;
std::cout << "学生 GPA: " << student.gpa << std::endl;
return 0;
}
// 函数定义:计算平均分
int calculate_average(int scores[], int count) {
int sum = 0;
for (int i = 0; i < count; i++) {
sum += scores[i];
}
return sum / count;
}小结
C++ 的基本语法包括:
- 语句和分号:每个语句必须以分号结尾
- 标识符:用于命名变量、函数等,遵循特定的命名规则
- 关键字:C++ 预定义的、具有特殊含义的单词
- 空白字符:提高代码可读性,被编译器忽略
- 预处理指令:以
#开头的特殊指令 - 代码块:由花括号
{}包围的一组语句 - 转义字符:以反斜杠
\开头的特殊字符 - 命名空间:用于组织代码,避免命名冲突
- main 函数:程序的入口点
掌握这些基本语法元素是编写正确 C++ 程序的前提,也是后续学习更复杂概念的基础。在接下来的章节中,我们将学习 C++ 的注释和数据类型。