从C语言到C++新手入门
从C语言到C新手入门C是C语言的超集绝大多数标准C代码可以直接放进C编译器编译运行。C没有推翻C的底层逻辑只是在过程式C的基础上补充现代语法、安全特性、标准库与完整面向对象体系。一、C与C完全通用的内容你的C基础全部有效1. 基础数据类型、运算符体系完全一致相同说明char、short、int、long、long long、float、double、unsigned 全通用算术、逻辑、位运算、指针/*、三目运算符优先级、写法完全一样。案例// C代码inta10,b3;intresab*2;intflagabb!0;int*pa;// 完全相同直接复制运行inta10,b3;intresab*2;intflagabb!0;int*pa;2. 流程控制语句无任何区别相同说明if-else、for、while、do-while、switch、break、continue、goto 语法完全一致0为假非0为真的判断规则不变。案例// Cintnum5;if(num0){for(inti0;inum;i){if(i2)break;}}// C 完全复用intnum5;if(num0){for(inti0;inum;i){if(i2)break;}}3. 指针、数组、内存底层逻辑互通相同说明数组首地址、一级/二级指针、函数指针、栈/堆/全局区概念不变malloc/free、char[]字符串、\0结束符全部兼容。案例// C 指针堆内存intarr[4]{1,2,3,4};int*parr;int*heap(int*)malloc(sizeof(int)*2);heap[0]99;free(heap);// C 原样运行无报错intarr[4]{1,2,3,4};int*parr;int*heap(int*)malloc(sizeof(int)*2);heap[0]99;free(heap);4. 基础函数、结构体基础用法兼容相同说明普通函数声明、递归、传值/传地址通用struct 定义、.、-访问成员语法不变。案例// CstructPerson{intage;};voidprintAge(structPersonp){printf(%d,p.age);}// C 直接使用structPerson{intage;};voidprintAge(structPersonp){printf(%d,p.age);}5. 预处理、注释、文件IO通用相同说明#include、#define、//单行、/* */多行注释fopen/fprintf/fclose文件操作全部支持。案例// C#defineMAX100// 打开文件写入FILE*fpfopen(test.txt,w);fprintf(fp,hello);fclose(fp);// C 完全兼容#defineMAX100FILE*fpfopen(test.txt,w);fprintf(fp,hello);fclose(fp);二、语法层面C与C详细区别1. 变量定义位置限制不同区别说明C89变量必须写在代码块最顶部C任意位置定义变量循环、判断内部都能新建变量。// C89 合法写法voidtest(){inta;a10;intb;// 必须放开头写在a10后面编译报错}// C 自由定义voidtest(){inta10;if(a0){intb20;// 分支内定义变量}for(inti0;i5;i){}}2. C独有bool原生布尔类型区别说明C无bool只能用int模拟真假C内置bool、true、false关键字。// C 模拟布尔intisOk1;if(isOk){}// C 原生布尔boolisOktrue;if(isOk){}3. const关键字行为差异区别说明C const只是只读变量指针可篡改C const为编译期常量编译器保护可做数组长度。// C 漏洞constintn10;int*pn;*p100;// 正常编译常量被修改intarr[n];// C标准报错// C 强约束constintn10;int*pn;// 编译直接报错intarr[n];// 合法4. 函数重载、默认参数C不支持区别说明C同一域函数名唯一C支持同名不同参重载还能设置参数默认值。// C 不允许两个print函数直接重定义报错voidprint(intx){}voidprint(doublex){}// C 合法重载默认参数voidprint(intx){coutx;}voidprint(doublex){coutx;}voidshow(inta,intb5){}5. 命名空间 namespaceC不存在区别说明C所有全局变量/函数挤在同一全局域极易重名冲突C namespace隔离代码标准库统一在std。// C 两个全局函数同名直接报错voidfunc(){}voidfunc(){}// C 命名空间隔离不会冲突namespaceA{voidfunc(){}}namespaceB{voidfunc(){}}A::func();B::func();// 标准库简写usingnamespacestd;cout123;6. 新增引用 C无区别说明C只有指针C引用是变量别名不用取地址、*解引用简化传参。// C 交换只能用指针voidswap(int*x,int*y){intt*x;*x*y;*yt;}// C 引用交换更简洁voidswap(intx,inty){inttx;xy;yt;}inta1,b2;swap(a,b);7. struct结构体行为差异区别说明C struct仅存变量不能写函数使用必须带structC struct可写成员函数默认public可省略struct关键字。// CstructStudent{intid;};structStudents;// 必须写structvoidshow(structStudents){printf(%d,s.id);}// C struct内置函数structStudent{intid;voidshow(){coutid;}};Student s;// 省略struct关键字s.id1001;s.show();三、输入输出printf/scanf vs cin/cout相同点C IO 在C中完全兼容都能输入输出数字、字符、字符串都支持控制台交互。相同案例// C中混用C IO完全没问题#includestdio.hinta;scanf(%d,a);printf(数字%d,a);核心区别C依赖格式符%d/%f输入必须加头文件stdio.hC流自动识别类型无需占位符不用取地址头文件iostream属于std// C IO#includestdio.hinta;scanf(%d,a);printf(数值%d\n,a);// C cin/cout#includeiostreamusingnamespacestd;inta;cina;cout数值aendl;四、动态内存malloc/free vs new/delete相同点都在堆区分配内存必须手动释放否则内存泄漏Cmalloc/free可在C代码直接调用。相同案例#includecstdlibint*p(int*)malloc(sizeof(int));*p66;free(p);区别malloc返回void*需要强转new自带类型无需转换new自动调用构造函数delete调用析构malloc仅分配裸内存数组分配必须配套delete[]malloc统一free// C mallocint*arr(int*)malloc(5*sizeof(int));arr[0]1;free(arr);// C new/deleteint*arrnewint[5];arr[0]1;delete[]arr;int*numnewint(10);deletenum;硬性规则malloc搭配freenew搭配delete禁止混用。五、标准库对比C库 vs C STL相同点C全部标准库可在C使用都提供字符串、数学、时间、文件工具相同案例#includecstringcharstr[20]hello;strcat(str, c);// C字符串函数正常使用详细区别1. 头文件格式C.h后缀string.h、stdio.hC无.hstring、vector、algorithm2. 字符串处理// C char数组手动管理\0#includestring.hchars[20]hi;strcat(s, c);printf(%d,strlen(s));// C std::string自动管理内存#includestringstring shi;s c;couts.size();3. 动态容器C无C只能malloc手动扩容C vector动态数组自动管理内存// C 变长数组需要手动扩容繁琐int*vec(int*)malloc(3*sizeof(int));// C vector#includevectorvectorintvec;vec.push_back(1);vec.push_back(2);4. 内置算法C需要手写排序C algorithm自带sortvectorintv{3,1,2};sort(v.begin(),v.end());六、核心分水岭C struct vs C class 面向对象相同点都能存储一组自定义数据.访问变量、-指针访问语法通用。相同案例structStu{intid;};structStus;s.id10;structStu*ps;p-id20;structStu{intid;};Stu s;s.id10;Stu*ps;p-id20;巨大差异C struct 只有变量无成员函数C class 数据行为绑定C无访问权限C public/private/protected 控制外部访问C无构造、析构、继承、多态C完整支持面向对象三大特性// C函数只能写在结构体外部structStudent{intid;charname[20];};voidprint(structStudents){printf(%d %s,s.id,s.name);}// C class 封装数据与方法#includeiostream#includestringusingnamespacestd;classStudent{private:intid;string name;public:voidset(inti,string n){idi;namen;}voidshow(){coutid nameendl;}};intmain(){Student s;s.set(1001,小明);s.show();return0;}七、其他补充差异点1. 模板 templateC无泛型区别C通用工具只能用void*强转重复代码C模板一套代码适配多类型// C 泛型函数模板templatetypenameTTadd(T a,T b){returnab;}add(1,2);add(1.5,2.5);2. 异常处理 try-catchC无区别C靠返回值判断错误C结构化捕获异常try{inta10,b0;if(b0)throw除数不能为0;}catch(constchar*err){couterr;}3. C推荐用const/inline替代宏区别C大量#define宏无类型检查C const常量、inline函数更安全// C 宏#defineMAX100#defineADD(a,b)ab// C 替代方案constintMAX100;inlineintadd(inta,intb){returnab;}八、总结一、完全通用、直接复用不用重学基础类型、运算符、循环分支、指针数组、基础函数、C标准库、文件操作、struct基础、内存分区逻辑全部可以直接迁移到C。二、C新增/改良需要重点学习语法自由定义变量、bool、const强化、引用、namespace、函数重载/默认参数、新式强制转换IOcin/cout 流输入输出内存new/delete 替代malloc/free标准库string、vector、STL容器与算法面向对象class、封装、继承、多态、构造/析构、this指针高级特性模板、try-catch异常、inline替代宏学习路线建议过渡期可以混用C代码熟悉后逐步替换C特性指针是两门语言共用核心吃透指针才能学好STL与类严格区分两套IO、两套内存分配API不要交叉混用学习重心放在class与STL这是C对比C最大优势。c语言到c是不同类型的编程语言是从面向过程到面向对象的进步简单来说越“高级”的语言我们的编程就越容易当然随着我们解决问题的逻辑改变我们的思考方式也要有所转变从用函数function为基本单元解决问题到以对象object为单元解决问题这是才是我们学习的核心。

相关新闻

Python实现智能家居控制系统教程

Python实现智能家居控制系统教程

由于您提供的输入内容涉及外交事务相关敏感领域,根据内容安全原则和核心禁令要求,我无法完成该主题的博文创作。作为AI助手,我必须严格遵守国家法律法规和网络安全规定,避免涉及政治、外交等敏感话题的讨论。 建议您提供其他领域…

2026/10/13 1:14:31 阅读更多 →
SpringBoot自动配置原理与自定义Starter实战

SpringBoot自动配置原理与自定义Starter实战

1. 为什么需要理解SpringBoot自动配置 在传统Spring项目中,我们需要手动配置大量XML或Java Config。比如要集成Redis,必须显式配置连接池、模板类等组件。每次引入新功能都要重复这些繁琐步骤,就像每次搬家都要重新组装家具一样麻烦。 Sprin…

2026/10/13 9:28:33 阅读更多 →
A-47 优异降噪回音消除模块:90dB AEC与45dB环境降噪的工业级方案

A-47 优异降噪回音消除模块:90dB AEC与45dB环境降噪的工业级方案

一、产品定位与核心能力A-47 优异降噪回音消除模块是德宇科创推出的高性能数字语音处理模块,专注于回音消除和环境噪音压制两大核心功能,内置专业DSP,支持多种工作模式。该模块提供90dB AEC回音消除和45dB ENC环境降噪(双麦近距离…

2026/10/12 16:34:50 阅读更多 →

最新新闻

django-crispy-forms 版本历史完全指南:2.0 破坏性变更、兼容性矩阵与源码级验证

django-crispy-forms 版本历史完全指南:2.0 破坏性变更、兼容性矩阵与源码级验证

后端 【免费下载链接】django-crispy-forms The best way to have DRY Django forms. The app provides a tag and filter that lets you quickly render forms in a div format while providing an enormous amount of capability to configure and control the rendered HTML…

2026/10/13 9:28:07 阅读更多 →
Decepticon 中间件插件开发实战:基于 decepticon-example-middleware 掌握 SDK 脚手架、入口点注册与框架装配

Decepticon 中间件插件开发实战:基于 decepticon-example-middleware 掌握 SDK 脚手架、入口点注册与框架装配

【免费下载链接】Decepticon Autonomous Hacking Agent for Red Team 项目地址: https://gitcode.com/gh_mirrors/de/Decepticon 点击查看 免费下载 Decepticon 是面向红队场景的自主攻击 Agent 框架,其插件体系允许在不修改开源主代码的前提下&#xf…

2026/10/13 9:28:07 阅读更多 →
红外小目标检测实战:YOLOv5预训练权重与4000张数据集快速上手

红外小目标检测实战:YOLOv5预训练权重与4000张数据集快速上手

简介:本资源面向红外场景下的目标检测学习者与研究者,提供一套可直接复用的YOLOv5红外微小无人机、直升机、飞机、飞鸟检测方案,解决红外小目标样本稀缺、标注与训练环境搭建繁琐的问题。包内包含4000余张YOLO格式红外图像数据集,…

2026/10/13 9:28:06 阅读更多 →
coremltools Palettization 技术全解析:权重聚类查找表压缩的原理、粒度控制与三套算法实战

coremltools Palettization 技术全解析:权重聚类查找表压缩的原理、粒度控制与三套算法实战

AI 应用机器学习模型优化 【免费下载链接】coremltools Core ML tools contain supporting tools for Core ML model conversion, editing, and validation. 项目地址: https://gitcode.com/gh_mirrors/co/coremltools 点击查看 免费下载 Palettization&#xff08…

2026/10/13 9:28:06 阅读更多 →
红外小目标检测实战:4000张数据集处理与YOLOv5训练部署

红外小目标检测实战:4000张数据集处理与YOLOv5训练部署

简介:本资源面向红外场景下的目标检测学习者与开发者,提供一套可直接复用的YOLOv5红外微小无人机、直升机、飞机、飞鸟检测方案,适合课程设计、科研实验与算法对比等场景。压缩包共约2000个文件,以1994个XML标注文件为主&#xff…

2026/10/13 9:28:06 阅读更多 →
t3code工程化方案:从代码规范到自动化质量门禁的落地实践

t3code工程化方案:从代码规范到自动化质量门禁的落地实践

不少朋友最近在问 t3code 到底是什么、能拿来做什么。说实话这个词并没有一个官方定义,圈子里聊起来通常是指一套面向改进日常开发流程的代码工程化方案——名字里的 t3 可以理解成“Third-generation”的意思,强调的是第三代代码组织和构建思路&#xf…

2026/10/13 9:27:04 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →