当前位置: 首页 > news >正文

第一天—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++ 中,cincout默认与 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/coutstdio的同步,提速核心。
  • cin.tie(0)/cout.tie(0):解除cincout的绑定(默认绑定会导致每次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;
} 
http://www.jsqmd.com/news/49793/

相关文章:

  • Linuxの磁盘管理
  • 实验三:类和对象_基础编程2
  • 2025年度最新橱柜定制厂家推荐榜单与选择指南:一份基于行业专业数据的权威分析报告,整木/实木/原木等材质橱柜十大主流供应商解析,全屋定制优质选择
  • Day1-20251124
  • AI元人文:思维跃迁自述
  • US$48.45 KEYDIY KD NB47-3 Universal Flip Remote Key 3 Buttons for Peugeot Type 5pcs/lot
  • 11月24日日记
  • 2025年度衣柜厂商最新推荐榜单与选择指南:一份基于行业专业数据的权威分析报告,整木/实木/原木等材质衣柜十大主流供应商解析,全屋定制优质选择
  • 详细介绍:【案例实战】智能出行导航助手HarmonyOS 开发全流程复盘
  • 2025年11月美国实习中介排名全攻略:从简历到入职的实力派之选,解锁名企资源的职场引路人
  • 2025中国本科申请外国研究生中介全攻略深度解析:助你冲刺世界名校
  • 程序人生:如何通过谈判获得更好的职业发展机会 - 实践
  • [豪の算法奇妙冒险] 代码随想录算法训练营第四天 | 24-两两交换链表中的节点、19-删除链表的倒数第N个节点、面试题02.07-链表相交、142-环形链表II
  • 【Android】详细讲解ViewDragHelper的达成原理(不含代码版)
  • 不那么详细的多项式笔记
  • Java的线程池了解吗?
  • 超简单!3步生成10W+爆款说唱视频!
  • 深度解析2026美国研究生申请机构:从GPA到藤校,这些机构藏着关键方案
  • 实用指南:介绍一下Ribbon
  • P27_完整的模型训练套路(二)
  • 洛谷 P1496:火烧赤壁 ← 离散化(数组 + sort + STL map)
  • P28_完整的模型训练套路(三)
  • 奶酪和机器人 非标准化的步数遍历
  • 6个适合做 PoC 的开源无代码/低代码工具推荐
  • 2025年度木门厂商推荐榜单与选择指南:一份基于行业专业数据的权威分析报告,整木/实木/原木门十大主流供应商解析
  • C# Quartz 定损执行 - microsoft
  • 2025美国本科申请中介深度解析:适配不同背景的梦校推手,谁能助你敲开美国名校门?
  • Rokid AI眼镜开发 —— 戴上Rokid Glasses的你有多强
  • 机器人的记忆化搜索
  • # 数据库对AI向量语义搜索的支持深度分析:PostgreSQL、MySQL、Elasticsearch技术选型指南