第一天—C++语法基础
一、开篇:查看 C++ 编译器版本
在学习 C++ 之前,了解了首先如何知道自己使用的编译器支持哪个 C++ 标准(如 C++11、C++17 等),这对后续使用新特性至关重要。通过__cplusplus宏可以直接查看:
#include <iostream>
using namespace std;
int main(){
cout << __cplusplus << endl; // 输出C++标准版本号
return 0;
}
输出说明:
- C++98:199711L
- C++11:201103L
- C++14:201402L
- C++17:201703L
- C++20:202002L
通过这个小代码,能快速确认编译器环境,避免因版本不兼容导致的语法错误。
二、实用优化:快速输入输出(取消同步流)
在 C++ 中,cin和cout默认与 C 语言的stdio同步,导致输入输出速度较慢。在处理大量数据时,可通过以下代码取消同步,提升效率:
#include <bits/stdc++.h> // 万能头文件(包含大部分常用头文件)
using namespace std;
int main(){
// 取消同步流,加速cin/cout(必须放在输入输出前)
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int a,b;
cin >> a >> b;
cout << a + b << '\n'; // 用'\n'代替endl(减少缓冲区刷新开销)
return 0;
}
核心知识点:
ios::sync_with_stdio(0):取消cin/cout与stdio的同步,提速核心。cin.tie(0)/cout.tie(0):解除cin与cout的绑定(默认绑定会导致每次cin前刷新cout)。- 万能头文件
<bits/stdc++.h>:包含所有标准库头文件(注意:部分编译器可能不支持,正式项目建议按需包含头文件)。
三、函数基础:无参无返回值函数
函数的最简化形态 —— 不需要输入参数,也不需要返回结果,仅执行特定操作(如打印信息)。
// 无参数无返回值函数
#include <iostream>
using namespace std;
void sayHello(){
cout << "Hello,World!" <<endl;
}
int main(){
sayHello();
return 0;
}
四、函数基础:有参有返回值函数
函数接收输入参数,经过处理后返回结果,是最常用的函数形态。
// 有参数有返回值的函数
#include <iostream>
using namespace std;
// 计算两个数的最大值
int getMax(int x, int y){
if(x > y){
return x;
}else{
return y;
}
}
int main(){
int a = 10, b = 20;
int maxValue = getMax(a, b);
cout << "最大值是" << maxValue << endl;
return 0;
}
五、函数进阶:多参数函数
函数可以接收多个不同类型的参数,只需在参数列表中用逗号分隔,按顺序传递即可。
// 多参函数
#include <iostream>
using namespace std;
// 计算三个数的平均值
double avg(int a, int b, int c){
double sum = a + b + c;
double avge = sum / 3.0;
return avge;
}
int main(){
int a = 10, b = 20, c = 30;
int average = avg(a,b,c);
cout << "平均数是" << average <<endl;
return 0;
}
六、函数模块化:声明与定义分离
当代码量较大时,将函数的声明和定义分离,能让代码结构更清晰。
// 函数声明与定义分离
#include <iostream>
using namespace std;
// 函数声明
int multiply(int a, int b);
int main(){
int result = multiply(5,6);
cout << "5 x 6 = " << result << endl;
return 0;
}
// 定义函数
int multiply(int a, int b){
return a * b;
}
七、C++ 特性:函数重载(同名函数多态)
C++ 允许在同一作用域中定义多个函数名相同、参数列表不同的函数,编译器会根据实参自动匹配对应的函数 —— 这就是函数重载。
// 函数的重载
#include <iostream>
using namespace std;
int add(int a, int b){
return a * b;
}
double add(double a, double b){
return a + b;
}
int main(){
cout << add(3,4) << endl;
cout << add(1.3, 1.6) << endl;
return 0;
}
八、函数进阶:递归函数(自己调用自己)
递归函数是指在函数体内调用自身的函数,核心是 “拆分问题 + 终止条件”,常用于解决阶乘、斐波那契数列、树遍历等问题。
// 递归函数
#include <iostream>
using namespace std;
// 计算阶乘:n! = n x (n - 1) x (n - 2) x ... x 1
int factorial(int n){
if(n < 1){
return 1; // 递归终止条件
}
return n * factorial(n - 1); // 递归调用
}
int main(){
int num = 10;
cout << num << "! = "<< factorial(num) << endl;
return 0;
}

浙公网安备 33010602011771号