C++ 语法
引言
C++是一种功能强大、灵活且被广泛使用的编程语言,它扩展了C语言,增加了面向对象编程、泛型编程和标准模板库等特性。掌握C++的语法是成为一名熟练的C++程序员的第一步。本文将系统地介绍C++的基础语法,帮助初学者建立坚实的语言基础。
基本程序结构
一个最简单的C++程序包含以下部分:
cpp
#include <iostream> // 包含头文件
int main() { // 主函数
std::cout << "Hello, World!" << std::endl; // 语句
return 0; // 返回语句
}
输出:
Hello, World!
程序结构解析:
- 预处理指令:
#include <iostream>
包含了输入输出流的标准库头文件。 - 主函数:
main()
是程序的入口点,每个C++程序都必须有一个。 - 函数体:由花括号
{}
包围。 - 语句:
std::cout << "Hello, World!" << std::endl;
是一个输出语句。 - 返回语句:
return 0;
表示程序正常结束。
注释
C++支持两种注释方式:
cpp
// 这是单行注释
/* 这是多行注释
可以跨越多行 */
提示
良好的注释习惯可以使代码更易读、更易维护。
数据类型
C++提供了多种内置数据类型:
基本数据类型
cpp
#include <iostream>
using namespace std;
int main() {
// 整数类型
int integerVar = 10;
short shortVar = 5;
long longVar = 100000L;
long long longLongVar = 10000000000LL;
// 浮点类型
float floatVar = 3.14f;
double doubleVar = 3.14159;
// 字符类型
char charVar = 'A';
// 布尔类型
bool boolVar = true;
cout << "整数: " << integerVar << endl;
cout << "短整数: " << shortVar << endl;
cout << "长整数: " << longVar << endl;
cout << "长长整数: " << longLongVar << endl;
cout << "浮点数: " << floatVar << endl;
cout << "双精度浮点数: " << doubleVar << endl;
cout << "字符: " << charVar << endl;
cout << "布尔值: " << boolVar << endl;
return 0;
}
输出:
整数: 10
短整数: 5
长整数: 100000
长长整数: 10000000000
浮点数: 3.14
双精度浮点数: 3.14159
字符: A
布尔值: 1
派生数据类型
- 数组:同一类型的集合
- 指针:存储内存地址的变量
- 引用:已存在变量的别名
- 结构体:不同类型的组合
- 枚举:自定义的有限集合
变量与常量
变量声明和初始化
cpp
int age = 25; // 声明并初始化
int height; // 仅声明
height = 180; // 赋值
常量定义
cpp
const double PI = 3.14159; // 使用const关键字
#define MAX_SIZE 100 // 使用预处理指令(不推荐)
警告
常量一旦定义,就不能被修改,尝试修改会导致编译错误。
运算符
C++支持多种运算符:
算术运算符
cpp
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 3;
cout << "a + b = " << a + b << endl; // 加法
cout << "a - b = " << a - b << endl; // 减法
cout << "a * b = " << a * b << endl; // 乘法
cout << "a / b = " << a / b << endl; // 整数除法
cout << "a % b = " << a % b << endl; // 取余
return 0;
}
输出:
a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1
关系运算符
cpp
cout << "a == b: " << (a == b) << endl; // 等于
cout << "a != b: " << (a != b) << endl; // 不等于
cout << "a > b: " << (a > b) << endl; // 大于
cout << "a < b: " << (a < b) << endl; // 小于
cout << "a >= b: " << (a >= b) << endl; // 大于等于
cout << "a <= b: " << (a <= b) << endl; // 小于等于
逻辑运算符
cpp
bool x = true, y = false;
cout << "x && y: " << (x && y) << endl; // 逻辑与
cout << "x || y: " << (x || y) << endl; // 逻辑或
cout << "!x: " << (!x) << endl; // 逻辑非
赋值运算符
cpp
int c = 5;
c += 3; // 等价于 c = c + 3;
cout << "c = " << c << endl; // 输出: c = 8
其他运算符
- 位运算符:
&
,|
,^
,~
,<<
,>>
- 自增自减:
++
,--
- 条件运算符:
?:
- 成员运算符:
.
,->
- 其他:
,
,[]
,()
,sizeof
控制流程
条件语句
if-else语句
cpp
#include <iostream>
using namespace std;
int main() {
int number;
cout << "输入一个整数: ";
cin >> number;
if (number > 0) {
cout << "正数" << endl;
} else if (number < 0) {
cout << "负数" << endl;
} else {
cout << "零" << endl;
}
return 0;
}
switch语句
cpp
char grade;
cout << "输入成绩等级(A-F): ";
cin >> grade;
switch (grade) {
case 'A':
cout << "优秀!" << endl;
break;
case 'B':
cout << "良好!" << endl;
break;
case 'C':
cout << "中等!" << endl;
break;
case 'D':
cout << "及格!" << endl;
break;
case 'F':
cout << "不及格!" << endl;
break;
default:
cout << "无效的等级!" << endl;
}
备注
switch
语句中的break
是必要的,否则会发生"贯穿"现象,执行后续所有case。
循环语句
for循环
cpp
// 计算1到10的和
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
cout << "1到10的和为: " << sum << endl;
while循环
cpp
// 打印10到1的倒计时
int countdown = 10;
while (countdown > 0) {
cout << countdown << " ";
countdown--;
}
cout << "发射!" << endl;
do-while循环
cpp
// 至少执行一次的菜单
int choice;
do {
cout << "\n菜单:\n";
cout << "1. 显示信息\n";
cout << "2. 编辑信息\n";
cout << "3. 退出\n";
cout << "请选择: ";
cin >> choice;
// 处理选择...
} while (choice != 3);
跳转语句
cpp
// break: 跳出循环
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 当i等于5时终止循环
}
cout << i << " ";
}
// continue: 跳过当前迭代
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
cout << i << " "; // 只打印奇数
}
// goto: 跳转到标签(不推荐使用)
int i = 0;
start:
cout << i << " ";
i++;
if (i < 5) {
goto start; // 跳回start标签
}
函数
函数是C++程序的基本构建块,允许将代码分解为可重用的模块。
函数声明和定义
cpp
// 函数声明
int add(int a, int b);
// 主函数
int main() {
int result = add(5, 3);
cout << "5 + 3 = " << result << endl;
return 0;
}
// 函数定义
int add(int a, int b) {
return a + b;
}
参数传递
cpp
// 值传递
void changeValue(int x) {
x = 100; // 只改变局部副本
}
// 引用传递
void changeValueByRef(int &x) {
x = 100; // 改变原始变量
}
int main() {
int num = 10;
changeValue(num);
cout << "值传递后: " << num << endl; // 输出: 10
changeValueByRef(num);
cout << "引用传递后: " << num << endl; // 输出: 100
return 0;
}
函数重载
C++允许多个同名函数,只要它们的参数列表不同。
cpp
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int add(int a, int b, int c) {
return a + b + c;
}
int main() {
cout << add(5, 3) << endl; // 调用第一个函数
cout << add(3.5, 2.7) << endl; // 调用第二个函数
cout << add(1, 2, 3) << endl; // 调用第三个函数
return 0;
}
默认参数
cpp
void printMessage(string message, int times = 1) {
for (int i = 0; i < times; i++) {
cout << message << endl;
}
}
int main() {
printMessage("Hello"); // 打印一次
printMessage("Hi", 3); // 打印三次
return 0;
}
实际案例:创建简单的计算器
下面是一个综合应用C++基本语法的简单计算器程序:
cpp
#include <iostream>
using namespace std;
// 函数声明
double add(double a, double b);
double subtract(double a, double b);
double multiply(double a, double b);
double divide(double a, double b);
int main() {
char operation;
double num1, num2, result;
bool continueCalculation = true;
cout << "简易计算器" << endl;
cout << "------------" << endl;
while (continueCalculation) {
// 获取用户输入
cout << "\n请输入第一个数字: ";
cin >> num1;
cout << "请输入操作符 (+, -, *, /): ";
cin >> operation;
cout << "请输入第二个数字: ";
cin >> num2;
// 进行计算
switch (operation) {
case '+':
result = add(num1, num2);
break;
case '-':
result = subtract(num1, num2);
break;
case '*':
result = multiply(num1, num2);
break;
case '/':
if (num2 != 0) {
result = divide(num1, num2);
} else {
cout << "错误: 除数不能为零!" << endl;
continue;
}
break;
default:
cout << "错误: 无效的操作符!" << endl;
continue;
}
// 显示结果
cout << "结果: " << num1 << " " << operation << " " << num2 << " = " << result << endl;
// 询问是否继续
char choice;
cout << "\n是否继续? (y/n): ";
cin >> choice;
if (choice != 'y' && choice != 'Y') {
continueCalculation = false;
}
}
cout << "\n感谢使用计算器!" << endl;
return 0;
}
// 函数定义
double add(double a, double b) {
return a + b;
}
double subtract(double a, double b) {
return a - b;
}
double multiply(double a, double b) {
return a * b;
}
double divide(double a, double b) {
return a / b;
}
这个例子展示了:
- 函数声明和定义
- 循环和条件语句
- 用户输入处理
- 基本计算功能
- 错误处理(除以零的情况)
总结
本文介绍了C++的基本语法,包括:
- 基本程序结构与注释
- 数据类型与变量
- 运算符
- 控制流程(条件语句和循环)
- 函数定义与调用
掌握这些基础语法是深入学习C++的重要前提。记住,编程是一项实践技能,多动手编写代码是最好的学习方式。
练习题
- 编写一个程序,计算并输出1到100中所有偶数的和。
- 创建一个函数,计算给定数字的阶乘。
- 编写一个程序,判断用户输入的年份是否为闰年。
- 实现一个简单的学生成绩管理程序,可以输入学生姓名和分数,并计算平均分。
- 编写一个程序,生成并打印乘法表(1到10)。
进一步学习资源
- C++ Primer(第5版)- 适合初学者的全面参考书
- cppreference.com - 在线C++参考手册
- learncpp.com - 免费的在线C++教程
- C++ Standard Library - 了解C++标准库的功能
- 实践编程挑战网站如LeetCode或HackerRank,提高编程技能
继续学习和实践,你将逐步掌握C++这门强大的编程语言!