# c-cpp-learning **Repository Path**: yxcym/c-cpp-learning ## Basic Information - **Project Name**: c-cpp-learning - **Description**: C/C++ 学习笔记和练习代码 - **Primary Language**: C/C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-05-05 - **Last Updated**: 2025-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp ## README #### 介绍 C/C++ 学习笔记和练习代码 #### 版本控制配置说明 📄 .gitattributes 文件 该文件用于定义 Git 对不同类型文件的处理方式,确保跨平台协作时文件格式一致: ```gitattributes # 文本文件编码和行结束符配置 *.{c,h,cpp,hpp} text encoding=utf-8 eol=lf # C/C++ 源文件使用 UTF-8 + LF *.md text encoding=utf-8 eol=lf # Markdown 文件使用 UTF-8 + LF *.{json,yaml,yml,xml,ini,cfg,properties} text encoding=utf-8 eol=lf # 配置文件统一格式 *.{sh,py,pl,rb,js,ts} text encoding=utf-8 eol=lf # 脚本文件使用 UTF-8 + LF *.{bat,cmd} text encoding=utf-8 eol=crlf # Windows 批处理文件使用 CRLF # 二进制文件明确标记 *.{png,jpg,jpeg,gif,svg,pdf,exe,dll,o,a,so,lib,obj} binary # 二进制文件不转换换行符 build/** binary # 构建输出目录视为二进制 ``` 📜 .gitignore 文件 该文件指定 Git 应忽略的文件和目录,主要包括: 操作系统生成的文件 ```gitignore # macOS .DS_Store # Windows Thumbs.db # Linux/Vim *.swp ``` 编译产物与临时文件 ```gitignore # 目标文件、库文件、可执行文件 *.o *.a *.exe ``` # 构建目录 ```gitignore **/build/ **/Debug/ **/Release/ ``` IDE / 编辑器配置 ```gitignore **/.vscode/ # VS Code 配置 **/.idea/ # IntelliJ 配置 .vs/ # Visual Studio 配置 ``` 依赖管理目录 ```gitignore **/node_modules/ # Node.js 依赖 **/.venv/ # Python 虚拟环境 ``` **✅ 哪些文件会被提交到仓库?** - 源码文件:.c、.cpp、.h、.hpp 等 C/C++ 代码 - 文档文件:.md、.txt、.rst 等说明文档 - 配置文件:.gitignore、.gitattributes、CMakeLists.txt 等项目配置 - 脚本文件:.sh、.py 等自动化脚本 - 资源文件:图片、数据文件等(需手动添加,部分大文件建议通过 Git LFS 管理) **💡 为什么需要统一文本文件编码和行结束符?** - 跨平台一致性:Windows 使用 CRLF 换行,Linux/macOS 使用 LF 换行,统一为 LF 可避免版本冲突 - 编码标准化:所有文本文件使用 UTF-8 编码,防止中文等非 ASCII 字符乱码 - 工具兼容性:确保编译器、脚本解释器等工具在不同系统上正确处理文件格式 **🚨 重要注意事项** - 提交代码前请确保 .gitignore 已正确配置,避免上传临时文件 - 使用 git status 检查未跟踪文件,确认需要提交的内容 - 若需添加被忽略的文件,可使用 git add -f 强制添加(谨慎使用) #### 环境配置 | 系统 | 操作 | |------------|----------------------------------------------------------------------| | **Ubuntu** | `sudo apt install build-essential` | | **macOS** | `xcode-select --install` | | **Windows**| 1. 安装 [Chocolatey](https://chocolatey.org/install)
2. `choco install mingw` | ## 环境配置 ### Visual Studio 用户 1. 安装 Visual Studio 2019 或更高版本 2. 打开对应的 .sln 解决方案文件 3. 在 IDE 中构建并运行项目 ### Visual Studio Code 用户(!!!不推荐初学者/突击学习时间不充裕/不愿意没兴趣折腾的人用vscode,老老实实装个(大的要死的)VS/(绝大部分竞赛指定ide)devc++,慢慢写代码;尽管vscode写万物) 用 vscode 运行 c/cpp 程序 - 1.**安装 MinGW 环境** 参考指定文章安装 MinGW64,为 C 语言编译提供 GCC 工具链 - **下载 MinGW-w64** - **下载途径** - 包括官网(Release 版停留在 v8.1.0) - GitHub(如 niXman 仓库,提供最新社区版,推荐选择`posix-seh`组合) - [winlibs.com](https://winlibs.com/)(目录清晰,可选带 llvm 环境(附带 [下载路径][winlibs-link])) - **安装步骤** 解压后将`bin`目录(如`C:\mingw64\bin`)添加到系统环境变量`Path`,通过`gcc --version`验证成功;其**最新版本支持 C++20**,并对比了 MSVCRT 与 UCRT 两种 C 标准库变体的特点 - **安装 MinGW-w64** 运行下载的安装包,按向导完成安装,过程中可选择安装路径、组件(如 GCC 编译器)及目标架构(64 位或 32 位)。 - **配置系统路径** - 找到 MinGW-w64 安装目录下的`bin`文件夹(如`C:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin`)。 - 将该路径添加到系统环境变量`Path`中,确保命令行可调用`gcc`、`g++`等工具。 - **验证安装** 打开命令提示符(CMD)或 PowerShell,输入以下命令: - `gcc -v` 或 `g++ -v`,若输出 GCC 版本信息(如`8.1.0`),则表示安装配置成功。 - 2.**添加 C/C++ 扩展** 在 VSCode 中通过`Ctrl+Shift+X`打开扩展商店,搜索并安装 Microsoft 的**C/C++ 扩展**,提供代码补全、调试等功能。 ### 添加 C/C++ 扩展 [winlibs-link]: https://github.com/brechtsanders/winlibs_mingw/releases/download/15.1.0posix-12.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-15.1.0-mingw-w64ucrt-12.0.0-r1.7z 1. 安装 VS Code 和 C/C++ 扩展 2. 配置编译器路径(GCC/Clang/MSVC) 3. 使用终端编译运行单个练习文件 #### 编译示例 ```bash # 基础练习 (C) cd "Visual Studio Code/exercises/final-exam" gcc 1.1.c -o score_converter && ./score_converter # 递归项目 (C++) cd "Visual Studio/recursion" g++ -std=c++11 recursion.cpp -o recursion_demo && ./recursion_demo ``` #### 目录结构 ```text 📁 c-cpp-learning ├── 📁 .vscode/ # VS Code 配置 (含调试/编译任务) ├── 📁 notes/ # 学习笔记与知识总结 ├── 📁 Visual Studio/ # VS 工程 (工程化开发) ├── 📁 Visual Studio Code/ # VS Code 练习 (敏捷开发) ├── 📄 .gitattributes # 跨平台文本处理规则 ├── 📄 .gitignore # 忽略编译产物/临时文件 └── 📄 LICENSE # MIT 开源协议 ``` #### 核心内容 ##### 🛠️ Visual Studio/ (工程化开发) ```text 📁 Visual Studio/ ├── 📁 ConsoleApplication1/ # 基础语法实践 ├── 📁 Project1/ # 项目配置探索 └── 📁 recursion/ # 递归算法实现 ``` **设计理念** 保留 `.sln`/`.vcxproj` 确保开箱可编译,通过 `.gitignore` 过滤 `.vs/` 和 `Debug/` 目录 ##### ⚡ Visual Studio Code/ (敏捷练习) ```text 📁 Visual Studio Code/ └── 📁 exercises/ └── 📁 final-exam/ # 10大核心练习 ├── 📄 1.1.c # 百分制转五分制 ├── 📄 1.2.c # 分段函数计算 ├── 📄 2.c # 字符大小写转换 ├── 📄 3.c # 水仙花数枚举 ├── 📄 4.c # 教师结构体处理 ├── 📄 5.c # 学生结构体处理 ├── 📄 6.c # 模拟 strcat(指针) ├── 📄 7.c # 模拟 strlen(指针) ├── 📄 8.c # 阶乘递归 ├── 📄 9.c # 杨辉三角 ├── 📄 10.c # 斐波那契递归 └── 📄 期末考试.txt # 题目描述 ``` **练习主题** `流程控制 → 结构体 → 指针 → 递归 → 算法` *注:递归算法与 VS 工程实现互参* #### 知识图谱 | 主题 | 位置示例 | 核心内容 | |--------------|-----------------------------------|------------------------------| | **指针** | `exercises/6.c` (strcat模拟) | 指针操作/内存管理 | | **结构体** | `exercises/4.c` (教师数据处理) | 结构体定义/嵌套使用 | | **递归** | `recursion/recursion.cpp` | 阶乘/斐波那契实现 | | **算法** | `exercises/9.c` (杨辉三角) | 二维数组/模式生成 | #### 贡献指南 1. 提交Issue报告问题或建议 2. PR流程: ```bash git checkout -b feat/new-algorithm # 添加内容后 git commit -m "feat: 添加快速排序实现" git push origin feat/new-algorithm ``` 3. 代码规范: - C文件使用 `.c` 后缀,C++使用 `.cpp` - 函数/变量采用小写蛇形命名 (`calculate_score()`) - 复杂逻辑需添加注释 #### 许可证 本项目采用 [MIT 许可证](LICENSE),允许自由使用、修改和分发代码。 ### 相关学习资料(暂时没有排序先后) **B站** B站 uid:25488437 LetsLearning B站 bv号:BV1ZH4y137ws 黑马程序员 黑马程序员C++零基础入门到精通全套视频教程,基于AI大模型的智能编码辅助编程,C++从基础到项目开发一套通关 B站 uid:3546647317448859 NotOnlySuccess B站 bv号:BV1Vm4y1r7jY 鹏哥C语言 C语言程序设计从入门到进阶【比特鹏哥c语言2024完整版视频教程】(c语言基础入门c语言软件安装C语言指针c语言考研C语言专升本C语言期末计算机二级C语言c语言 B站 bv号:BV16ZbFeNEbG 01星球 C/C++完整0基础自学路线,书籍推荐及具体方向选择 **书籍** C Primer Plus (Stephen Prata) 数据结构(C语言) (严蔚敏) 大话数据结构 (程杰) hello-algo_1.2.0_zh_cpp ### 联系与反馈 如需交流学习、反馈问题或提建议: 1. **优先推荐**:通过 Gitee Issues 提交 → [仓库 Issues 页面](https://gitee.com/yxcym/c-cpp-learning/issues)(公开透明,方便问题追溯) 2. **邮件沟通**:发送至 `yangzerui2021@163.com`(有想一起学习的也可以先邮箱联系)