news 2026/3/17 12:59:48

c++学习计划

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
c++学习计划

以下是针对零基础初学者学习C 语言和 C++超详细12周学习计划,按周拆解,每阶段明确列出:

  • 🎯 学习目标
  • 🔑 核心知识点(重点罗列)
  • ✅ 必做练习/小项目
  • ⚠️ 常见误区与注意事项

📅第1周:C语言入门 + 开发环境搭建

🎯 目标

能编写、编译、运行简单的C程序,理解基本语法结构。

🔑 重点知识点

  • 安装开发环境(推荐:VS Code + GCC 或 Dev-C++)
  • #include <stdio.h>main()函数结构
  • 注释(///* */
  • 基本数据类型:int,float,double,char
  • 变量命名规则与声明
  • 常用运算符:算术(+ - * / %)、关系(== != > <)、逻辑(&& || !
  • 输入输出:printf(),scanf()
  • 条件语句:if,if-else,else if,switch
  • 循环语句:for,while,do-while

✅ 必做练习

  1. 输出“Hello, World!”
  2. 输入两个数,输出它们的和、差、积、商
  3. 判断一个数是奇数还是偶数
  4. 判断是否为闰年
  5. 打印1~100中所有3的倍数
  6. for循环打印九九乘法表

⚠️ 注意事项

  • scanf输入时注意格式匹配(如%d对应int
  • 不要忘记在scanf中加&(取地址)
  • =是赋值,==才是比较!

📅第2周:函数 + 数组 + 字符串基础

🎯 目标

掌握函数模块化编程,熟练使用数组处理批量数据。

🔑 重点知识点

  • 函数定义:返回类型、函数名、参数列表、函数体
  • 函数调用与返回值(return
  • 局部变量 vs 全局变量
  • 一维数组:声明、初始化、遍历
  • 二维数组:理解“数组的数组”
  • 字符数组(C风格字符串):以\0结尾
  • 常用字符串函数(需#include <string.h>):
    • strlen(),strcpy(),strcat(),strcmp()

✅ 必做练习

  1. 编写函数计算阶乘fact(n)
  2. 编写函数判断素数isPrime(n)
  3. 用数组存储10个成绩,求平均分、最高分
  4. 实现冒泡排序(升序)
  5. 输入一个字符串,统计字母、数字、空格个数
  6. 字符串反转(如 “hello” → “olleh”)

⚠️ 注意事项

  • 数组下标从 0 开始!
  • 字符串必须留一位给\0,如char s[6] = "hello";
  • 函数参数默认是值传递(修改形参不影响实参)

📅第3周:指针(C语言核心难点!)

🎯 目标

彻底理解指针概念,能用指针操作变量、数组、函数参数。

🔑 重点知识点

  • 地址(&)与指针变量(*
  • 指针的声明:int *p;
  • 解引用:*p表示 p 指向的值
  • 指针与数组的关系:arr[i] == *(arr + i)
  • 指针作为函数参数(实现“引用效果”)
  • 指针的算术运算(p++,p + n
  • 动态内存分配:
    • malloc(size):申请内存
    • free(ptr):释放内存
    • #include <stdlib.h>

✅ 必做练习

  1. 交换两个整数(用指针实现)
  2. 用指针遍历数组并求和
  3. 编写函数,通过指针参数返回最大值和最小值
  4. 动态创建一个长度由用户输入的整型数组,填充并打印
  5. 实现字符串拷贝函数(不调用strcpy

⚠️ 注意事项

  • 指针未初始化就使用 →野指针(危险!)
  • malloc返回的是void*,需强制转换(C++中不推荐,但C中常见):(int*)malloc(...)
  • 使用完动态内存必须free,否则内存泄漏
  • 指针不是整数!不要随意赋值数字地址

📅第4周:结构体 + 文件操作 + C语言综合

🎯 目标

能用结构体组织复杂数据,实现文件持久化存储。

🔑 重点知识点

  • 结构体定义:struct Student { ... };
  • 结构体变量声明与初始化
  • 访问成员:.(直接访问),->(指针访问)
  • 结构体数组
  • 文件操作(#include <stdio.h>):
    • FILE *fp;
    • fopen("file.txt", "r/w/a")
    • fread(),fwrite()(二进制)
    • fprintf(),fscanf()(文本)
    • fclose(fp);

✅ 必做项目

学生成绩管理系统(C语言版)

  • 功能要求:
    • 添加学生信息(学号、姓名、3门成绩)
    • 显示所有学生
    • 计算平均分、总分
    • 将数据保存到students.dat(二进制)或students.txt
    • 程序启动时从文件加载数据

⚠️ 注意事项

  • 文件打开后务必检查是否为 NULL
  • 二进制读写用fwrite(&stu, sizeof(stu), 1, fp)
  • 文本模式注意换行符兼容性(Windows\r\nvs Linux\n

📅第5周:C++ 基础语法(告别C风格)

🎯 目标

掌握C++基本输入输出、引用、函数新特性。

🔑 重点知识点

  • #include <iostream>
  • using namespace std;
  • cout << "Hello" << endl;
  • cin >> x;
  • 引用(Reference)int &ref = x;(别名,非指针!)
  • 函数重载(同名不同参)
  • 默认参数:void func(int a, int b = 10);
  • 内联函数:inline int add(int a, int b) { ... }
  • const修饰变量、指针、函数参数

✅ 必做练习

  1. cin/cout重写第1周的练习
  2. 编写交换函数,使用引用而非指针
  3. 实现两个print()函数:一个打印 int,一个打印 double
  4. 编写带默认参数的函数(如power(base, exp=2)

⚠️ 注意事项

  • 引用必须初始化,且不能更改绑定对象
  • 函数重载不能仅靠返回类型区分
  • const在 C++ 中比 C 更重要(用于接口安全)

📅第6周:类与对象(OOP 起步)

🎯 目标

理解面向对象思想,会定义和使用类。

🔑 重点知识点

  • class定义(默认 private)
  • 成员变量 + 成员函数
  • 构造函数(无返回值,可重载)
  • 析构函数(~ClassName(),自动调用)
  • public/private访问控制
  • 对象创建:栈上(Student s;) vs 堆上(new Student

✅ 必做练习

  1. 定义Circle类:半径、计算面积/周长
  2. 定义BankAccount类:余额、存款、取款、查询
  3. 实现构造函数重载(默认构造、带参构造)
  4. 观察析构函数何时被调用(加cout调试)

⚠️ 注意事项

  • 成员函数可在类内定义(隐式 inline)或类外(用::
  • 不要将所有成员设为 public(破坏封装)
  • 堆对象记得delete,否则内存泄漏

📅第7周:继承与多态(OOP 核心)

🎯 目标

掌握继承机制,理解多态如何实现“一个接口,多种行为”。

🔑 重点知识点

  • 继承语法:class Dog : public Animal { ... };
  • 派生类访问基类成员(受访问控制影响)
  • 构造/析构顺序:基类 → 派生类(构造);反之(析构)
  • 虚函数(virtual):实现运行时多态
  • 纯虚函数virtual void speak() = 0;→ 抽象类
  • 多态使用:基类指针/引用指向派生类对象

✅ 必做练习

  1. 设计Shape基类(含纯虚函数area()
  2. 派生Rectangle,Circle,实现各自area()
  3. Shape*数组存储不同图形,统一调用area()
  4. 实现AnimalDog,Cat,调用speak()输出不同叫声

⚠️ 注意事项

  • 析构函数应声明为virtual(防止资源泄漏)
  • 多态只对指针/引用有效,对象切片会丢失派生信息
  • 纯虚函数使类不可实例化(抽象类)

📅第8周:STL 标准模板库入门

🎯 目标

摆脱手动管理数组/链表,使用现代C++容器。

🔑 重点知识点

  • #include <vector>:动态数组
    • push_back(),size(),at(),[]
  • #include <string>:C++ 字符串(比C字符串安全)
    • +拼接,length(),substr()
  • #include <map>:键值对容器
    • map<string, int> wordCount;
  • 迭代器(iterator):begin(),end()
  • 算法:#include <algorithm>sort(vec.begin(), vec.end())

✅ 必做练习

  1. vector<int>存储成绩,排序并输出
  2. 统计一段文本中每个单词出现次数(用map<string, int>
  3. string实现回文判断
  4. 将第4周的学生成绩系统改用vector<Student>实现

⚠️ 注意事项

  • STL 自动管理内存,无需new/delete
  • vector插入可能触发扩容(性能注意)
  • map默认按键排序(基于<

📅第9–10周:项目实战 I

🎯 目标

整合所学,完成完整控制台项目。

✅ 推荐项目(选1–2个)

  1. 通讯录管理系统(C++版)

    • 功能:添加、删除、查找、显示、保存到文件
    • 使用:类 + vector + 文件流(ofstream/ifstream
  2. 简易计算器(支持表达式)

    • 支持3 + 5 * 2
    • 可用栈实现(进阶),或先支持两数运算
  3. 图书管理系统

    • 图书信息:书名、作者、ISBN、是否借出
    • 支持借阅/归还、按作者搜索

🔑 技术要点

  • 类设计(封装数据+操作)
  • 文件持久化(文本或二进制)
  • 用户交互菜单循环
  • 错误输入处理(如输入非数字)

📅第11–12周:项目实战 II + 进阶拓展

🎯 目标

提升代码质量,接触现代C++理念。

🔑 拓展知识点(了解即可)

  • C++11 新特性:
    • auto自动类型推导
    • 范围 for:for (auto x : vec)
    • 智能指针简介:unique_ptr,shared_ptr(替代new/delete
  • 调试技巧:断点、单步执行、查看变量
  • 简单算法题(LeetCode Easy):
    • 两数之和
    • 反转整数
    • 回文数
    • 合并两个有序数组

✅ 最终挑战项目

综合管理系统(如:小型超市收银系统)

  • 商品类(名称、价格、库存)
  • 购物车(vector)
  • 结账计算总价
  • 数据存盘/加载

📌 总结:关键能力里程碑

时间应掌握的能力
第4周后能用C语言写结构化程序,理解指针和内存
第8周后能用C++写面向对象程序,使用STL容器
第12周后能独立开发小型控制台应用,具备调试能力

如果你希望我:

  • 提供每周的每日任务清单
  • 推荐具体练习题(带答案)
  • 提供项目代码框架
  • 或调整节奏(如更慢/更快)

请随时告诉我!祝你学有所成!💻✨

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 8:01:35

输出格式统一不再是难题:lora-scripts实现JSON/表格自动生成功能

输出格式统一不再是难题&#xff1a;lora-scripts实现JSON/表格自动生成功能 在智能系统日益深入企业核心流程的今天&#xff0c;一个看似微小却频繁出现的问题正困扰着开发者——大模型“说得对”&#xff0c;但“写得乱”。你让AI生成一份患者诊断报告&#xff0c;它语义清晰…

作者头像 李华
网站建设 2026/3/14 3:09:32

lora-scripts支持的LoRA应用场景全景图谱

LoRA应用场景全景解析&#xff1a;从技术原理到工业落地 在生成式AI的浪潮中&#xff0c;一个核心矛盾日益凸显&#xff1a;大模型能力越强&#xff0c;微调成本越高。全参数训练动辄需要数张A100显卡和海量数据&#xff0c;这让个人开发者、中小企业望而却步。有没有一种方式&…

作者头像 李华
网站建设 2026/3/16 23:35:14

网盘直链下载助手原理剖析:如何穿透限制获取lora-scripts资源

网盘直链下载助手原理剖析&#xff1a;如何穿透限制获取lora-scripts资源 在AI模型训练日益平民化的今天&#xff0c;越来越多的开发者和创作者开始尝试微调自己的Stable Diffusion或语言模型。而LoRA&#xff08;Low-Rank Adaptation&#xff09;作为当前最主流的轻量化微调技…

作者头像 李华
网站建设 2026/3/13 7:35:22

每100步自动保存一次权重:防止意外中断导致前功尽弃

每100步自动保存一次权重&#xff1a;防止意外中断导致前功尽弃 在AI模型训练的世界里&#xff0c;最令人崩溃的瞬间是什么&#xff1f;不是参数调不好&#xff0c;也不是效果不理想——而是当你盯着GPU显存跑了整整三天&#xff0c;终于看到loss曲线开始收敛时&#xff0c;系统…

作者头像 李华
网站建设 2026/3/13 7:31:00

RPM构建中的Python版本地狱:如何正确处理%{python3_sitelib}宏

引言&#xff1a;一个真实的构建陷阱 想象这样一个场景&#xff1a;你在chroot环境中同时安装了Python 3.6.8和Python 3.11&#xff0c;python3软链接指向3.11。当你使用mock构建glusterfs的RPM包时&#xff0c;spec文件中使用了%{python3_sitelib}宏。然而&#xff0c;在构建过…

作者头像 李华
网站建设 2026/3/13 17:40:47

lora-scripts配置文件详解:my_lora_config.yaml修改要点解析

LoRA-Scripts配置文件详解&#xff1a;my_lora_config.yaml修改要点解析 在生成式AI技术飞速发展的今天&#xff0c;越来越多开发者希望借助微调手段让预训练模型具备个性化能力。然而全参数微调动辄需要数百GB显存和数天训练时间&#xff0c;对大多数个人或中小企业而言并不现…

作者头像 李华