目录
一、课程核心信息
1. 培养目标
2. 课程安排
3. 参考教材
二、C语言核心知识复习(衔接基础)
1. 概述要点
2. 核心知识点梳理
(1)数据类型
(2)程序结构
(3)数组与字符串
(4)函数与指针
(5)结构体
3. 复习练习(实战巩固)
三、C++与C语言的核心区别
1. 关系定位
2. 编程思想对比
3. 代码示例对比(求圆的面积与周长)
(1)面向过程(C语言)
(2)面向对象(C++)
四、C++对C语言的核心扩充(重点)
1. 输入输出流(cin/cout)
2. const定义常变量(替代#define)
3. 函数重载(同名函数多态)
4. 函数模板(通用函数)
5. 变量的引用(别名,替代指针)
6. 动态内存分配(new/delete)
7. 字符串变量(string类)
五、课后习题(实战强化)
总结
大家好!今天给大家带来一篇C++入门的核心知识点梳理,专门针对从C语言过渡到C++的小伙伴。本文基于《C++面向对象程序设计》第一章核心内容,帮大家快速衔接C语言基础、掌握C++核心新增特性,搭建完整的入门知识框架,为后续深入学习打下坚实基础~
📌 本文适用人群:C语言基础扎实,准备入门C++的初学者 📚 核心目标:理解面向对象思想,掌握C++高频基础特性 💻 阅读建议:结合代码示例实操,重点理解C与C++的思想差异
一、课程核心信息
1. 培养目标
掌握C++语言基本语义、语法,初步理解面向对象思想及程序设计方法;
提升编程与调试能力,为后续课程(如数据结构、操作系统)铺垫基础。
2. 课程安排
理论教学:C++语言特点、语法规则、程序设计示例;
实践环节:上机实验(强化代码实操与调试能力);
核心要求:理论与实践结合,重视代码规范性和可读性。
3. 参考教材
选用教材:《C++面向对象程序设计》(陈希 著);
参考教材:《C++ Primer》中文版(Stanley B. Lippman 著)—— 经典权威,适合深入钻研。
二、C语言核心知识复习(衔接基础)
C++是C语言的超集,学好C++的前提是扎实掌握C语言核心知识点,以下是重点回顾:
1. 概述要点
C程序由函数构成,支持模块化设计;
程序入口固定为
main函数,与函数位置无关;语句以
;结尾,注释支持/*…*/(多行)和//(单行);无内置输入输出语句,需借助
printf、scanf等标准库函数。
2. 核心知识点梳理
(1)数据类型
基本类型:
int(整型)、char(字符型)、float(单精度浮点型)、double(双精度浮点型);构造类型:数组、
struct(结构体)、union(共用体)、enum(枚举);特殊类型:指针类型、
void(空类型)。
(2)程序结构
顺序结构:输入输出函数(
getchar/putchar、printf/scanf);选择结构:
if语句、?:运算符、switch…case;循环结构:
while、do…while、for循环,continue(跳过本次循环)、break(终止循环)。
(3)数组与字符串
支持一维、二维数组,字符数组存储字符串;
常用字符串处理函数:
puts(输出)、gets(输入)、strcpy(复制)、strcat(拼接)、strcmp(比较)、strlen(长度)。
(4)函数与指针
函数:定义、调用、参数传递(值传递、地址传递)、局部/全局变量、递归;
指针:定义与引用、指针与数组/字符串、指针作为函数参数(实现双向传值)。
(5)结构体
自定义复合类型,可包含多个不同类型成员;
示例:
struct Student { char name[20]; // 姓名 int age; // 年龄 };
3. 复习练习(实战巩固)
题目:按行顺序为5×5二维数组赋1-25的自然数,编写函数求所有元素总和及左下半三角元素。
正确代码:
#include <stdio.h> // 计算数组总和 int SUM(int a[5][5]) { int i, j, s = 0; for (i = 0; i <= 4; i++) for (j = 0; j <= 4; j++) s += a[i][j]; return s; } // 输出左下半三角元素(i >= j) void printLowerTriangle(int a[5][5]) { int i, j; for (i = 0; i <= 4; i++) { for (j = 0; j <= 4; j++) { if (i >= j) printf("%d ", a[i][j]); } printf("\n"); } } int main() { int a[5][5], i, j, k = 1, total; // 赋值1-25 for (i = 0; i <= 4; i++) for (j = 0; j <= 4; j++) a[i][j] = k++; // 调用函数 total = SUM(a); printLowerTriangle(a); printf("数组总和:%d\n", total); return 0; }运行结果:
1 6 7 11 12 13 16 17 18 19 21 22 23 24 25 数组总和:325三、C++与C语言的核心区别
1. 关系定位
C++是C语言的超集,绝大多数C代码无需修改即可在C++中运行;
核心差异:C语言仅支持面向过程编程(关注步骤与函数),C++新增面向对象编程(关注对象、属性与行为)。
2. 编程思想对比
通过三个实例直观感受两种编程思想的差异:
应用场景
面向过程(C语言)
面向对象(C++)
学生信息管理系统
按“输入→处理→输出”步骤编写独立函数
定义“学生”“班级”对象,封装属性与操作(增删改查)
五子棋游戏
按“开局→落子→绘图→判赢”顺序执行
拆分“玩家”“棋盘”“规则”对象,各司其职
俄罗斯方块
按“生成方块→移动→消除→判结束”步骤编码
定义“方块”(下落、旋转)、“棋盘”(绘图、消行)对象
3. 代码示例对比(求圆的面积与周长)
(1)面向过程(C语言)
#define PI 3.1415926 #include <stdio.h> int main() { double r = 10; double perimeter = 2 * PI * r; // 周长 double area = PI * r * r; // 面积 printf("周长:%lf,面积:%lf\n", perimeter, area); return 0; }(2)面向对象(C++)
#include <iostream> using namespace std; #define PI 3.1415926 // 定义“圆”类(封装属性与方法) class Circle { private: double x, y; // 圆心坐标(私有属性,仅类内访问) double radius; // 半径(私有属性) public: // 构造函数(初始化对象) Circle(double x=0, double y=0, double r=1.0) { this->x = x; this->y = y; this->radius = r; } // 计算面积(成员方法) double getArea() { return PI * radius * radius; } // 计算周长(成员方法) double getPerimeter() { return 2 * PI * radius; } }; int main() { Circle myCircle(0, 0, 10); // 创建“圆”对象 cout << "面积:" << myCircle.getArea() << endl; cout << "周长:" << myCircle.getPerimeter() << endl; return 0; }四、C++对C语言的核心扩充(重点)
C++在C语言基础上新增了诸多实用特性,大幅提升编程效率和代码灵活性,以下是高频考点:
1. 输入输出流(cin/cout)
优势:无需指定数据类型,支持
endl换行,语法更简洁;示例:
#include <iostream> using namespace std; // 命名空间(必须声明) int main() { double x, y; cout << "请输入两个数:"; // 输出提示 cin >> x >> y; // 输入数据(自动匹配类型) cout << "x + y = " << x + y << endl; // 输出结果 return 0; }
2. const定义常变量(替代#define)
C语言
#define缺陷:无类型、仅字符替换(易出错);C++
const优势:有类型、占内存、值不可修改,支持指针指向;示例:
#include <iostream> using namespace std; int main() { const float PI = 3.14159; // 常变量(只读,不可修改) // PI = 3.14; // 报错:只读变量不能赋值 cout << "PI = " << PI << endl; return 0; }
3. 函数重载(同名函数多态)
定义:同一函数名,参数个数/类型不同(返回值可同可不同);
示例(求不同类型/个数的最大值):
#include <iostream> using namespace std; // 3个int最大值 int max(int a, int b, int c) { return a > b ? (a > c ? a : c) : (b > c ? b : c); } // 2个float最大值 float max(float a, float b) { return a > b ? a : b; } int main() { cout << "int最大值:" << max(3, 7, 5) << endl; cout << "float最大值:" << max(2.1f, 1.8f) << endl; return 0; }注意:不可仅靠返回值不同实现重载(编译器无法区分)。
4. 函数模板(通用函数)
解决问题:避免重载函数的重复编码,适配多种数据类型;
格式:
template <typename T> 返回类型 函数名(参数表);示例:
#include <iostream> using namespace std; // 函数模板(T为虚拟类型,自动匹配实参类型) template <typename T> T max(T a, T b, T c) { return a > b ? (a > c ? a : c) : (b > c ? b : c); } int main() { cout << "int最大值:" << max(3, 7, 5) << endl; cout << "long最大值:" << max(10L, 20L, 15L) << endl; return 0; }
5. 变量的引用(别名,替代指针)
定义:
类型 &引用名 = 变量名,与变量共享内存(无独立空间);核心特性:必须初始化、不可更改关联对象、更安全(无空引用);
示例(作为函数参数实现双向传值):
#include <iostream> using namespace std; // 引用作为参数,直接操作原变量 void swap(int &a, int &b) { int temp = a; a = b; b = temp; } int main() { int i = 3, j = 5; swap(i, j); // 无需传地址,直接传变量 cout << "i = " << i << ", j = " << j << endl; // 输出:5 3 return 0; }
6. 动态内存分配(new/delete)
替代C语言的
malloc/free,优势:自动计算类型大小、支持初始化、语法简洁;示例:
#include <iostream> using namespace std; int main() { // 1. 分配单个变量 int *p1 = new int(5); // 初始化值为5 cout << *p1 << endl; delete p1; // 释放空间 // 2. 分配数组 int *p2 = new int[10]; for (int i = 0; i < 10; i++) p2[i] = i; delete[] p2; // 数组释放需加[] return 0; }
7. 字符串变量(string类)
替代字符数组,支持直接赋值、拼接、比较,无需手动管理
\0;示例:
#include <iostream> #include <string> // 必须包含头文件 using namespace std; int main() { string s1 = "Hello"; string s2 = "World"; string s3 = s1 + " " + s2; // 字符串拼接(直接用+) cout << "s3 = " << s3 << endl; // 输出:Hello World cout << "s3长度:" << s3.size() << endl; // 输出:11 // 字符串比较 if (s1 < s2) cout << s1 << " < " << s2 << endl; return 0; }
五、课后习题(实战强化)
利用引用实现两个整数的交换(已在“引用”部分示例);
输入一个字符串,反向输出每个字符:
#include <iostream> #include <string> using namespace std; int main() { string str; cout << "请输入字符串:"; cin >> str; // 反向输出 for (int i = str.size() - 1; i >= 0; i--) cout << str[i] << " "; return 0; }利用函数模板实现两个不同类型数据的最大值比较(提示:使用多类型参数
template <typename T1, typename T2>)。
总结
本章重点围绕C++的基础入门与C语言的衔接,核心是理解面向对象编程思想与C++的新增特性。建议结合示例代码反复实操,重点掌握
cin/cout、引用、函数重载、模板、动态内存分配等高频知识点。后续将深入学习类与对象、继承与多态等核心内容,敬请关注!💬 互动环节:如果大家在学习过程中有任何疑问,或者代码调试遇到问题,欢迎在评论区留言讨论~ 觉得本文对你有帮助的话,别忘了点赞、收藏、关注博主,后续会持续更新C++相关知识点!