2.1 进入C++
2.1.1 第一个C++程序
// myfirst.cpp -- 第一个C++程序
#include <iostream> // 预处理器编译指令
int main() // 函数头
{
using namespace std; // 使用std命名空间
cout << "Come up and C++ me some time." << endl;
cout << "You won't regret it!" << endl;
return 0; // 结束main()函数
}
输出:
Come up and C++ me some time.
You won't regret it!
2.1.2 程序结构解析
| 组成部分 | 说明 |
|---|---|
// 注释 |
单行注释,编译器忽略 |
#include <iostream> |
预处理器指令,包含头文件 |
int main() |
主函数,程序入口 |
{ } |
函数体定界符 |
using namespace std; |
使用标准命名空间 |
return 0; |
返回值,0表示正常结束 |
2.1.3 注释
C++ 支持两种注释方式:
// 这是单行注释(C++风格)
/* 这是
多行注释
(C风格)*/
#include <iostream>
int main()
{
// 单行注释示例
/* 多行注释示例
可以跨越多行 */
std::cout << "Hello, World!" << std::endl;
return 0;
}
⚠️ 注意 :C++风格的
//注释更常用,C风格/* */注释不能嵌套。
2.1.4 预处理器与头文件
#include <iostream> // C++标准头文件(无.h后缀)
#include <cmath> // C数学库的C++版本
#include "myfile.h" // 用户自定义头文件(用引号)
-
< >用于标准库头文件 -
" "用于自定义头文件 -
C++头文件没有
.h后缀 (如iostream而非iostream.h)
2.1.5 main() 函数
// main函数的标准形式
int main()
{
// 函数体
return 0; // 向操作系统返回0,表示程序正常结束
}
-
main()是程序的入口点 ,每个C++程序必须有且只有一个main() -
返回类型
int表示向操作系统返回一个整数 -
return 0表示程序正常退出,非0值通常表示异常
2.2 C++语句
2.2.1 声明语句与变量
#include <iostream>
int main()
{
using namespace std;
int carrots; // 声明一个整型变量
carrots = 25; // 赋值语句
cout << carrots << endl;
int apples = 10; // 声明并初始化(推荐写法)
cout << apples << endl;
return 0;
}
变量声明规则:
-
必须先声明,再使用
-
变量名区分大小写(
Carrots≠carrots) -
不能以数字开头
-
不能使用C++关键字
2.2.2 赋值语句
#include <iostream>
int main()
{
using namespace std;
int steinway;
int baldwin;
int yamaha;
yamaha = steinway = baldwin = 88; // 连续赋值(从右向左)
cout << "yamaha = " << yamaha << endl;
cout << "baldwin = " << baldwin << endl;
cout << "steinway = " << steinway << endl;
return 0;
}
输出:
yamaha = 88
baldwin = 88
steinway = 88
2.2.3 cout 输出语句
#include <iostream>
int main()
{
using namespace std;
int number = 42;
double pi = 3.14159;
// 输出字符串
cout << "Hello, C++!" << endl;
// 输出变量
cout << "number = " << number << endl;
// 链式输出(<<运算符可以连续使用)
cout << "pi = " << pi << "\n";
// endl vs \n
cout << "使用endl会刷新缓冲区" << endl;
cout << "使用\\n只换行不刷新" << "\n";
return 0;
}
💡 endl vs
\n:endl输出换行符并刷新输出缓冲区 ;\n只输出换行符,效率更高。
2.3 其他C++语句
2.3.1 cin 输入语句
// getinfo.cpp -- 使用cin读取用户输入
#include <iostream>
int main()
{
using namespace std;
int carrots;
cout << "How many carrots do you have?" << endl;
cin >> carrots; // 从键盘读取整数
cout << "Here are two more. ";
cout << "Now you have " << carrots + 2 << " carrots." << endl;
return 0;
}
运行示例:
How many carrots do you have?
12
Here are two more. Now you have 14 carrots.
2.3.2 cin 读取多个值
#include <iostream>
int main()
{
using namespace std;
int age;
double height;
cout << "请输入年龄和身高(用空格分隔):" << endl;
cin >> age >> height; // 链式读取
cout << "年龄:" << age << endl;
cout << "身高:" << height << " 米" << endl;
return 0;
}
2.3.3 类简介
// 类是C++的核心概念
// cout 和 cin 都是类的对象
// cout 是 ostream 类的对象
// cin 是 istream 类的对象
// 它们都定义在 <iostream> 头文件中
#include <iostream>
int main()
{
using namespace std;
// cout 对象使用 << 运算符(插入运算符)
cout << "这是cout对象的使用示例" << endl;
// cin 对象使用 >> 运算符(提取运算符)
int x;
cin >> x;
return 0;
}
2.4 函数
2.4.1 使用有返回值的函数
// sqrt_demo.cpp -- 使用sqrt()函数
#include <iostream>
#include <cmath> // 包含数学函数库
int main()
{
using namespace std;
double area;
cout << "请输入正方形的面积:";
cin >> area;
double side = sqrt(area); // 调用sqrt()函数求平方根
cout << "边长为:" << side << endl;
// 函数可以嵌套使用
cout << "4的平方根是:" << sqrt(4.0) << endl;
cout << "2的平方根是:" << sqrt(2.0) << endl;
return 0;
}
运行示例:
请输入正方形的面积:25
边长为:5
4的平方根是:2
2的平方根是:1.41421
2.4.2 自定义函数
// ourfunc.cpp -- 定义并使用自定义函数
#include <iostream>
// 函数原型(声明)
void simon(int n); // 无返回值函数
int sum(int a, int b); // 有返回值函数
int main()
{
using namespace std;
simon(3); // 调用自定义函数
cout << "Pick an integer: ";
int count;
cin >> count;
simon(count);
cout << "1 + 2 = " << sum(1, 2) << endl;
return 0;
}
// 函数定义
void simon(int n)
{
using namespace std;
cout << "Simon says touch your toes " << n << " times." << endl;
}
int sum(int a, int b)
{
return a + b;
}
输出:
Simon says touch your toes 3 times.
Pick an integer: 5
Simon says touch your toes 5 times.
1 + 2 = 3
2.4.3 函数原型
#include <iostream>
// ✅ 函数原型:在main()之前声明函数
double cube(double x); // 告诉编译器函数的参数类型和返回类型
int main()
{
using namespace std;
double side = 3.0;
double volume = cube(side);
cout << "边长为 " << side << " 的正方体体积为:" << volume << endl;
return 0;
}
// 函数定义(可以在main()之后)
double cube(double x)
{
return x * x * x;
}
💡 函数原型的作用:
告知编译器函数的返回类型
告知编译器函数的参数数量和类型
使编译器能够检查函数调用是否正确
2.4.4 void 函数(无返回值)
#include <iostream>
void printLine(char ch, int width); // 函数原型
int main()
{
printLine('*', 20);
std::cout << " Hello, C++! " << std::endl;
printLine('-', 20);
return 0;
}
void printLine(char ch, int width)
{
for (int i = 0; i < width; i++)
std::cout << ch;
std::cout << std::endl;
}
输出:
********************
Hello, C++!
--------------------
2.5 命名空间
2.5.1 using namespace std
#include <iostream>
// 方式一:使用整个命名空间(最常见,但不推荐在大型项目中使用)
using namespace std;
int main()
{
cout << "方式一:using namespace std" << endl;
return 0;
}
2.5.2 using 声明(推荐)
#include <iostream>
int main()
{
// 方式二:只引入需要的名称(推荐)
using std::cout;
using std::endl;
using std::cin;
int x;
cout << "请输入一个数字:";
cin >> x;
cout << "你输入了:" << x << endl;
return 0;
}
2.5.3 使用作用域解析运算符(最规范)
#include <iostream>
int main()
{
// 方式三:每次使用时加 std:: 前缀(最规范,大型项目推荐)
std::cout << "方式三:使用 std:: 前缀" << std::endl;
std::cout << "这是最明确的写法" << std::endl;
return 0;
}
| 方式 | 写法 | 适用场景 |
|---|---|---|
| 全局引入 | using namespace std; |
学习、小型程序 |
| 局部声明 | using std::cout; |
中型程序 |
| 作用域解析 | std::cout |
大型项目、库开发 |
2.6 综合示例
// complete_demo.cpp -- 第2章综合示例
#include <iostream>
#include <cmath>
// 函数原型
double circleArea(double radius);
void printResult(double r, double area);
int main()
{
using namespace std;
cout << "===== 圆面积计算器 =====" << endl;
cout << "请输入圆的半径:";
double radius;
cin >> radius;
double area = circleArea(radius);
printResult(radius, area);
return 0;
}
double circleArea(double radius)
{
const double PI = 3.14159265358979;
return PI * radius * radius;
}
void printResult(double r, double area)
{
using namespace std;
cout << "半径为 " << r << " 的圆,面积为:" << area << endl;
}
运行示例:
===== 圆面积计算器 =====
请输入圆的半径:5
半径为 5 的圆,面积为:78.5398
📝 第2章知识点总结
| 知识点 | 核心要点 |
|---|---|
| 程序结构 | #include → main() → 语句 → return 0 |
| 注释 | // 单行,/* */ 多行 |
| 头文件 | C++标准头文件无 .h 后缀 |
| cout | 使用 << 运算符输出,endl 换行并刷新缓冲区 |
| cin | 使用 >> 运算符输入 |
| 变量 | 先声明后使用,声明时最好初始化 |
| 函数 | 原型声明 → 调用 → 定义,void 表示无返回值 |
| 命名空间 | std:: 前缀或 using namespace std; |
| return | main() 返回0表示正常结束 |