Skip to content

C++ 基本语法

C++ 有一套特定的语法规则,了解这些规则是编写正确 C++ 程序的基础。在本章节中,我们将介绍 C++ 的基本语法元素,包括语句结构、标识符命名规则等。

1. 语句和分号

在 C++ 中,语句是执行特定操作的指令,每个语句都必须以分号(;)结尾。分号是语句的结束标志,告诉编译器一个语句已经结束。

例如:

cpp
int a = 10;  // 赋值语句
std::cout << "Hello!" << std::endl;  // 输出语句
return 0;  // 返回语句

2. 标识符

标识符是用于命名变量、函数、类等的名称。在 C++ 中,标识符的命名规则如下:

  1. 只能包含字母、数字和下划线(_)
  2. 不能以数字开头
  3. 区分大小写(如ageAge是不同的标识符)
  4. 不能使用 C++ 的关键字(如intiffor等)

2.1 示例

合法的标识符

  • name
  • _count
  • student_age
  • MAX_VALUE

非法的标识符

  • 123abc(以数字开头)
  • student-age(包含连字符)
  • int(使用关键字)
  • my name(包含空格)

2.2 命名规范

虽然 C++ 没有强制要求,但为了代码的可读性,通常遵循以下命名规范:

  • 变量和函数:使用小写字母,单词之间用下划线分隔(如student_name
  • 类名:使用大驼峰命名法(如Student
  • 常量:使用大写字母,单词之间用下划线分隔(如MAX_SIZE

3. 关键字

关键字是 C++ 中预定义的、具有特殊含义的单词,不能用作标识符。以下是 C++ 的常用关键字:

关键字说明
asm内嵌汇编
auto自动类型推导
bool布尔类型
break跳出循环或 switch 语句
caseswitch 语句的分支
catch异常捕获
char字符类型
class类定义
const常量
const_cast常量转换
continue继续循环的下一次迭代
defaultswitch 语句的默认分支
delete释放内存
dodo-while 循环的开始
double双精度浮点类型
dynamic_cast动态类型转换
elseif 语句的否则分支
enum枚举类型
explicit显式构造函数
extern外部变量声明
false布尔值 false
float单精度浮点类型
forfor 循环
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空类型
volatilevolatile 变量
wchar_t宽字符类型
whilewhile 循环

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++ 的基本语法包括:

  1. 语句和分号:每个语句必须以分号结尾
  2. 标识符:用于命名变量、函数等,遵循特定的命名规则
  3. 关键字:C++ 预定义的、具有特殊含义的单词
  4. 空白字符:提高代码可读性,被编译器忽略
  5. 预处理指令:以#开头的特殊指令
  6. 代码块:由花括号{}包围的一组语句
  7. 转义字符:以反斜杠\开头的特殊字符
  8. 命名空间:用于组织代码,避免命名冲突
  9. main 函数:程序的入口点

掌握这些基本语法元素是编写正确 C++ 程序的前提,也是后续学习更复杂概念的基础。在接下来的章节中,我们将学习 C++ 的注释和数据类型。