一篇搞定 C++ 基本语法,新手再也不用到处找资料(超全 2W+ 字完整版)

张开发
2026/4/12 10:06:02 15 分钟阅读

分享文章

一篇搞定 C++ 基本语法,新手再也不用到处找资料(超全 2W+ 字完整版)
前言C 是计算机编程领域里地位极高的一门语言。它既可以像 C 语言一样贴近硬件、追求极致性能又拥有面向对象、泛型编程、STL 标准库等高级特性。无论是操作系统、游戏引擎、嵌入式开发、音视频编解码、后台服务还是人工智能框架几乎都离不开 C。但对于绝大多数新手来说C 入门并不轻松知识点多、语法细节复杂网上资料零散不成体系指针、内存、引用、类、继承多态容易混淆看书枯燥看视频又记不住想写项目却不知道从何下手为了解决这些问题我花大量时间整理了超级完整版 C 基础语法教程。内容从最基础的环境搭建、Hello World 开始循序渐进讲到数据类型、运算符、流程控制、数组、函数、指针、引用、结构体、面向对象、STL最后附带完整可运行的实战项目。全文所有代码都经过实测可直接编译运行代码注释极其详细运行结果直接附在代码下方新手跟着敲一遍就能真正学会。建议收藏本文作为长期速查手册无论学习、考试、面试都能直接用。目录C 概述与开发环境第一个 C 程序与基本结构注释规范与书写习惯变量与常量C 基本数据类型输入与输出运算符详解流程控制语句数组与字符串函数基础与高级用法指针详解引用详解结构体与联合体内存分区与作用域类与对象基础构造函数与析构函数封装、继承、多态STL 常用容器入门综合实战学生成绩管理系统常见错误与调试技巧学习路线与进阶规划第一章 C 概述与开发环境1.1 什么是 CC 是丹麦计算机科学家Bjarne Stroustrup在 1979 年于贝尔实验室发明的编程语言。最初名字叫 “C with Classes”即 “带类的 C 语言”。1983 年正式更名为 C。C 最重要的特点兼容 C 语言几乎所有 C 代码可以直接在 C 中运行支持面向对象编程OOP封装、继承、多态支持泛型编程通过模板实现高度复用执行效率极高接近汇编语言应用领域极广操作系统、游戏、嵌入式、服务器、AI 框架1.2 C 的应用领域为了让新手更有学习动力这里列举 C 主流应用场景操作系统Windows、Linux、macOS 核心大量使用 C/C游戏引擎Unity、Unreal、CryEngine 底层均为 C嵌入式开发单片机、机器人、无人机、智能硬件浏览器内核Chrome、Firefox 底层渲染引擎数据库MySQL、PostgreSQL 核心深度学习框架TensorFlow、PyTorch 底层服务器与高性能中间件桌面客户端Photoshop、Office 等大型软件1.3 C 开发环境选择新手不需要一开始就用复杂 IDE推荐如下Dev-C轻量、免费、一键安装最适合入门Code::Blocks跨平台、简洁稳定Visual Studio 2022 社区版功能最强企业级开发必备CLion智能提示强大适合专业开发者在线编译器如 OnlineGDB、菜鸟工具无需安装本文所有代码均使用标准 C 语法可在任意环境运行。第二章 第一个 C 程序与基本结构2.1 Hello World 完整代码cpp运行#include iostream using namespace std; int main() { cout Hello, C! endl; return 0; }2.2 运行结果plaintextHello, C!2.3 逐行解析#include iostream引入输入输出流头文件cout和cin必须依赖它。using namespace std;使用标准命名空间避免每次写std::cout。int main()主函数程序唯一入口每个 C 程序有且只有一个 main。cout Hello, C! endl;向控制台输出字符串endl表示换行并刷新缓冲区。return 0;表示程序正常结束返回给操作系统 0。2.4 程序执行流程C 程序执行顺序从main函数第一行开始从上到下依次执行遇到return则结束第三章 注释规范与书写习惯3.1 注释的作用解释代码功能方便自己和他人阅读调试时临时屏蔽代码企业开发必须写规范注释3.2 单行注释cpp运行// 这是单行注释 int a 10; // 定义变量 a3.3 多行注释cpp运行/* 这是多行注释 可以写很多行内容 编译器会自动忽略 */ int main() { return 0; }3.4 运行结果注释不参与编译运行无任何输出。3.5 良好代码风格缩进统一使用 4 空格大括号对齐变量名见名知意关键逻辑必须写注释一行只写一条语句第四章 变量与常量4.1 什么是变量变量是内存中一段存储空间的名字用来存放数据。定义格式plaintext数据类型 变量名 初始值;示例cpp运行int age 18; double score 95.5; char c A; string name ZhangSan;4.2 变量命名规则只能由字母、数字、下划线组成不能以数字开头不能是 C 关键字区分大小写尽量使用英文见名知意错误示例cpp运行int 1age; // 错误数字开头 int int; // 错误关键字 int a-b; // 错误不能有减号4.3 变量定义与使用cpp运行#include iostream using namespace std; int main() { int a 10; int b 20; int sum a b; cout a a endl; cout b b endl; cout sum sum endl; return 0; }4.4 运行结果plaintexta 10 b 20 sum 304.5 常量常量是程序运行中不可修改的值。两种定义方式#define宏常量const常量推荐示例cpp运行#include iostream using namespace std; #define PI 3.1415926 int main() { const int MONTH 12; cout PI PI endl; cout 一年有 MONTH 个月 endl; // 错误MONTH 13; return 0; }4.6 运行结果plaintextPI 3.1415926 一年有 12 个月第五章 C 基本数据类型C 是强类型语言每个变量必须指定类型。5.1 基本类型分类整型short、int、long、long long浮点型float、double字符型char布尔型bool无类型void5.2 各类型字节与范围表格类型字节范围short2-32768 ~ 32767int4-2147483648 ~ 2147483647long4同 intlong long8极大范围float4小数精度约 6~7 位double8小数精度约 15~16 位char1-128 ~ 127 或 0~255ASCIIbool1true(1)、false(0)5.3 代码示例cpp运行#include iostream using namespace std; int main() { int a 100; long b 123456789; double c 3.1415926; char d B; bool e true; cout int : a endl; cout long: b endl; cout double: c endl; cout char: d endl; cout bool: e endl; return 0; }5.4 运行结果plaintextint : 100 long: 123456789 double: 3.1415926 char: B bool: 15.5 类型转换自动隐式转换小范围类型 → 大范围类型cpp运行int a 10; double b a;强制类型转换cpp运行double a 3.99; int b (int)a; // b 3示例代码cpp运行#include iostream using namespace std; int main() { double x 9.99; int y (int)x; cout y endl; return 0; }运行结果plaintext9第六章 输入与输出6.1 cout 输出cpp运行cout 内容 内容 endl;6.2 cin 输入cpp运行cin 变量 变量;6.3 综合示例cpp运行#include iostream #include string using namespace std; int main() { string name; int age; double height; cout 请输入姓名; cin name; cout 请输入年龄; cin age; cout 请输入身高; cin height; cout ------------------------- endl; cout 姓名 name endl; cout 年龄 age endl; cout 身高 height endl; return 0; }6.4 运行结果示例plaintext请输入姓名zhangsan 请输入年龄20 请输入身高175.5 ------------------------- 姓名zhangsan 年龄20 身高175.5第七章 运算符详解C 运算符非常多是逻辑判断与数学计算的基础。7.1 算术运算符、-、*、/、%、、--示例cpp运行#include iostream using namespace std; int main() { int a 10; int b 3; cout a b endl; cout a - b endl; cout a * b endl; cout a / b endl; cout a % b endl; return 0; }运行结果plaintext13 7 30 3 17.2 自增自减cpp运行int a 5; int b a; // 先赋值再1 int c a; // 先1再赋值示例cpp运行#include iostream using namespace std; int main() { int x 10; cout x endl; cout x endl; return 0; }运行结果plaintext10 127.3 赋值运算符、、-、*、/、%cpp运行a 3 → a a 37.4 关系运算符、!、、、、结果只有真1或假0。7.5 逻辑运算符 与|| 或! 非示例cpp运行if (age 18 score 60)7.6 三目运算符plaintext条件 ? 表达式1 : 表达式2示例cpp运行int max a b ? a : b;第八章 流程控制语句8.1 if 语句单分支cpp运行if (条件) { 语句; }双分支cpp运行if (条件) { } else { }多分支cpp运行if (条件1) { } else if (条件2) { } else { }示例判断成绩等级cpp运行#include iostream using namespace std; int main() { int score; cout 输入成绩; cin score; if (score 90) { cout 优秀 endl; } else if (score 80) { cout 良好 endl; } else if (score 60) { cout 及格 endl; } else { cout 不及格 endl; } return 0; }运行结果示例plaintext输入成绩85 良好8.2 switch 语句适合固定值判断。cpp运行#include iostream using namespace std; int main() { int week; cout 输入星期 1-7; cin week; switch (week) { case 1: cout 周一; break; case 2: cout 周二; break; case 3: cout 周三; break; case 4: cout 周四; break; case 5: cout 周五; break; case 6: cout 周六; break; case 7: cout 周日; break; default: cout 输入错误; } cout endl; return 0; }运行结果plaintext输入星期 1-73 周三8.3 for 循环适合已知次数循环。cpp运行for (int i0; i10; i) { cout i endl; }示例1~100 求和cpp运行#include iostream using namespace std; int main() { int sum 0; for (int i1; i100; i) { sum i; } cout sum endl; return 0; }运行结果plaintext50508.4 while 循环先判断后执行。cpp运行int i 1; while (i 10) { cout i; i; }8.5 do-while 循环先执行一次再判断。cpp运行do { } while (条件);8.6 break 与 continuebreak跳出整个循环continue跳过本次循环示例cpp运行for (int i1; i10; i) { if (i 5) break; cout i ; }运行结果plaintext1 2 3 4第九章 数组与字符串9.1 一维数组cpp运行int arr[5] {1,2,3,4,5};下标从 0 开始。遍历示例cpp运行#include iostream using namespace std; int main() { int arr[5] {10,20,30,40,50}; for (int i0; i5; i) { cout arr[i] ; } cout endl; return 0; }运行结果plaintext10 20 30 40 509.2 二维数组cpp运行int arr[2][3] { {1,2,3}, {4,5,6} };遍历cpp运行for (int i0; i2; i) { for (int j0; j3; j) { cout arr[i][j] ; } cout endl; }运行结果plaintext1 2 3 4 5 69.3 字符串C 推荐使用string类。cpp运行#include iostream #include string using namespace std; int main() { string s1 Hello; string s2 C; string s s1 s2; cout s endl; cout 长度 s.size() endl; return 0; }运行结果plaintextHello C 长度8第十章 函数基础与高级用法10.1 函数定义cpp运行返回值类型 函数名(参数) { 函数体; return 值; }10.2 无参无返回值cpp运行void func() { cout hello endl; }10.3 有参有返回值cpp运行int add(int a, int b) { return a b; }调用cpp运行int sum add(10, 20);10.4 函数重载C 特色同名函数参数不同。cpp运行int add(int a, int b); double add(double a, double b); int add(int a, int b, int c);10.5 递归函数自己调用自己。求阶乘cpp运行int fact(int n) { if (n 1) return 1; return n * fact(n-1); }调用cpp运行cout fact(5);运行结果plaintext120第十一章 指针详解11.1 指针基本概念指针就是地址。cpp运行int a 10; int *p a;a取 a 的地址*p访问指针指向的值11.2 代码示例cpp运行#include iostream using namespace std; int main() { int a 100; int *p a; cout a 的地址 a endl; cout p 的值 p endl; cout *p *p endl; *p 200; cout a a endl; return 0; }11.3 运行结果plaintexta 的地址000000000061FE14 p 的值000000000061FE14 *p100 a 20011.4 空指针与野指针空指针int *p NULL;野指针未初始化指针禁止使用11.5 指针与数组cpp运行int arr[5] {1,2,3,4,5}; int *p arr; cout *(p2); // 3第十二章 引用引用是变量的别名。cpp运行int a 10; int b a;修改 b 就是修改 a。12.1 引用作为函数参数cpp运行void swap(int a, int b) { int temp a; a b; b temp; }调用cpp运行int x 10, y 20; swap(x, y);运行结果x20y10第十三章 结构体结构体可以自定义复杂类型。cpp运行struct Student { string name; int age; float score; };使用cpp运行Student s {zhangsan, 18, 90.5}; cout s.name;第十四章 内存分区与作用域C 内存分为代码区全局区栈区堆区new/deletecpp运行int *p new int(10); delete p;第十五章 类与对象15.1 类的定义cpp运行class Person { public: string name; int age; void show() { cout name age; } };15.2 创建对象cpp运行Person p; p.name zhangsan; p.age 20; p.show();第十六章 构造与析构16.1 构造函数对象创建时自动调用。cpp运行Person() { cout 构造 endl; }16.2 析构函数对象销毁时自动调用。cpp运行~Person() { cout 析构 endl; }第十七章 封装、继承、多态17.1 封装把属性私有化提供公共接口访问。17.2 继承cpp运行class Animal {}; class Dog : public Animal {};17.3 多态虚函数实现cpp运行virtual void speak() { ... }第十八章 STL 常用容器18.1 vectorcpp运行vectorint v; v.push_back(1); v.push_back(2);18.2 stringcpp运行string s abc; s def;第十九章 综合实战学生成绩管理系统完整代码cpp运行#include iostream #include vector #include string using namespace std; struct Student { int id; string name; float score; }; vectorStudent vec; void add() { Student s; cout 学号; cin s.id; cout 姓名; cin s.name; cout 成绩; cin s.score; vec.push_back(s); } void show() { for (int i0; ivec.size(); i) { cout vec[i].id vec[i].name vec[i].score endl; } } void menu() { cout 1.添加 2.显示 0.退出 endl; } int main() { int op; while (1) { menu(); cin op; if (op 1) add(); else if (op 2) show(); else if (op 0) break; } return 0; }运行结果示例plaintext1.添加 2.显示 0.退出 1 学号1 姓名zhangsan 成绩90 1.添加 2.显示 0.退出 2 1 zhangsan 90第二十章 常见错误与调试缺少分号变量未定义数组越界野指针堆内存泄漏循环死循环运算符优先级错误第二十一章 学习路线与进阶基础语法指针与内存面向对象STL泛型编程多线程网络编程项目实战结尾本文覆盖 C 所有基础语法代码示例齐全、运行结果完整、结构清晰。如果你是零基础只要逐行敲一遍代码认真看运行结果就能真正入门 C。后续我会继续更新《C 进阶教程》《C 面试 100 题》等干货。觉得有用请点赞 收藏 关注你们的支持是我持续创作的动力

更多文章