C++:1.初识C++
一、输入输出头文件要求C标准输入输出必须包含#includeiostreamusingnamespacestd;cout输出作用代替C语言的printf用来打印数据。特点不用写格式控制符%d,%s,%c自动识别数据类型示例coutHello World!endl;cin输入作用代替C语言中的scanf用来接受用户输入。特点不要格式符自动匹配变量类型示例cindata;coutdata dataendl;endl作用换行刷新缓冲区C独有cin/cout优缺点总结优点写法简单、不用记格式符自动识别类型不容易报错支持连续输入输出缺点速度比 scanf/printf 略慢大数据量场景优先C练习猜数字#define_CRT_SECURE_NO_WARNINGS#includeiostream#includecstdlib#includectimeusingnamespacestd;intmain(){srand(time(0));//种种子intdatarand()%10001;intcount10;intinputData;boolis_winfalse;while(count--){coutinput data:endl;cininputData;if(inputDatadata){cout大了endl;}elseif(inputDatadata){cout小了endl;}else{cout对了endl;is_wintrue;break;}}if(!is_win){cout失败了endl;}return0;}二、C和C的区别文件后缀区分C语言源文件 .c头文件 .hC语言源文件 .cpp / .cc / .cxx头文件 .hpp本质区别后缀决定编译器按 C 语法 还是 C 语法解析代码。函数默认参数C 允许函数参数设置默认值传参从右往左匹配不能跳过右边默认参数只传左边。示例voidfun(inta,intb10){ b;}intmain(){fun(1);// a1b使用默认值10return0;}错误写法// 错误靠左参数不能有默认值voidfun(inta10,intb);总结C:无默认参数C支持从右向左参数匹配inline内联函数C优化特性原理普通函数调用流程调用函数 → 压栈 → 跳转执行 → 返回 → 出栈频繁调用小函数会有巨大开销inline 作用编译阶段直接把函数代码复制粘贴到调用处消除跳转开销。规则1.inline 只是建议不是强制2.复杂函数、递归函数编译器会自动拒绝内联3.适合代码短、频繁调用的函数示例inlineintsum(inta,intb)// 内联函数{returnab;}intmain(){intdata0;for(inti0;i100000;i){datasum(data,i);// data data i;}coutdataendl;return0;}函数重载概念同一作用域函数名相同参数个数/类型不同构成重载。示例voidfun(inta);voidfun(inta,intb);voidfun(doublea);C语言编译后只保留函数名同名函数直接冲突不支持重载例如 void fun(int) 编译后符号就是 funC语言编译后符号 函数名 参数信息同名不同参符号不同不会冲突例如fun(int) → fun_ifun(int,int) → fun_ii所以 C 可以重载。extern “C”{函数声明}作用强制这段代码按C规则编译不生成重载符号兼容C项目。引用1.概念引用 变量别名底层本质是指针但是更安全、更简洁语法示例inta10;intba;//b是a的别名2.引用必须初始化指针可以不初始化引用定义必须绑定一个变量无空引用。3.引用一旦绑定终身不变inta10,b20;intxa;xb;// 只是赋值不是改变指向引用不能改变指向杜绝野指针问题。4.底层本质intba;//编译器底层等价于int*constba;引用不能改指向可以改值。5.指针vs引用指针可空、可改指向、危险、灵活引用不可空、不可改指向、安全、简洁6.对比以下两种写法#includeiostream#includecstring#includecstdlibusingnamespacestd;voidGetMemory(char**q){// 指针的指针二级指针*q(char*)malloc(1024);}intmain(){char*pNULL;GetMemory(p);// 要传p的地址strcpy(p,hello world);coutpendl;free(p);return0;}✅ 说明 char** q 是二级指针 *q 就是对 p 的解引用修改 *q 会改变 p 的值也能成功分配内存。#includeiostream#includecstring#includecstdlibusingnamespacestd;voidGetMemory(char*q){// 指针的引用q(char*)malloc(1024);}intmain(){char*pNULL;GetMemory(p);strcpy(p,hello world);coutpendl;free(p);return0;}✅ 说明 char* q 是对指针 p 的引用函数内修改 q 就是直接修改 p 所以 p 能拿到分配的内存地址程序正常运行。7.两种方式的对比指针的引用 char* C 写法更直观不用取地址 p 。二级指针 char** C/C 都支持需要显式传 p 语法稍繁琐。这两种写法都能让程序正常打印 hello world 不会出现内存错误。8.数组指针的引用voidfunc(int(*p)[10])//数组指针来接受数组大小一定要写不然不能进行1操作{}intmain(){inta[10]{0};func(a);// a-int* a-(*)[10]数组指针coutsizeof(a)endl;//计算整个数组大小4*1040coutsizeof(a[0])endl;//首元素地址为int*类型32位系统中为4,64位中为8int*pa;// acoutsizeof(p)endl;//也是int*类型32位系统中为4,64位中为8// 引用变量引用a a;//int *b a;int(*b)[10]a;coutb (b1)endl;}9.引用实现冒泡排序#define_CRT_SECURE_NO_WARNINGS#includeiostream#includecstdlib#includectimeusingnamespacestd;voidbubbleSort(int(arr)[20],intsize){intflag;for(inti0;isize-1;i){flag0;for(intj0;jsize-1-i;j){if(arr[j]arr[j1]){inttmparr[j];arr[j]arr[j1];arr[j1]tmp;flag1;}}if(flag0){break;}}}intmain(){srand(time(0));intarr[20]{0};for(inti0;i20;i){arr[i]rand()%100;}bubbleSort(arr,20);for(inti0;i20;i){coutarr[i] ;}coutendl;return0;}

相关新闻

C++智能指针:深入理解std::make_unique的优势与实战应用

C++智能指针:深入理解std::make_unique的优势与实战应用

1. 项目概述:为什么我们需要std::make_unique?如果你写过一段时间的现代C(C11及以后),肯定对智能指针不陌生。std::unique_ptr作为独占所有权的智能指针,是管理动态内存、避免内存泄漏的利器。但回想一下&a…

2026/7/26 6:02:31阅读更多 →
Windows邮槽通信:原理、实现与应用场景

Windows邮槽通信:原理、实现与应用场景

1. 邮槽通信技术概述 邮槽(Mailslot)是Windows平台提供的一种单向进程间通信(IPC)机制,它允许不同进程之间通过虚拟文件对象进行消息传递。与管道(Pipe)不同,邮槽采用基于数据报&…

2026/7/26 6:02:31阅读更多 →
视频字幕提取终极指南:3分钟学会本地OCR字幕生成SRT文件

视频字幕提取终极指南:3分钟学会本地OCR字幕生成SRT文件

视频字幕提取终极指南:3分钟学会本地OCR字幕生成SRT文件 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内…

2026/7/26 6:02:31阅读更多 →
大模型能力扩展实战:长文本处理与多智能体协作

大模型能力扩展实战:长文本处理与多智能体协作

1. 项目概述:大模型能力扩展实战最近在部署大语言模型时,我发现很多开发者对如何扩展模型的基础能力存在普遍需求。特别是当需要处理长文本、执行代码分析或联网搜索时,原生模型往往显得力不从心。本文将分享一套经过实战验证的解决方案&…

2026/7/26 7:14:38阅读更多 →
基于AI视觉的零售智能防损系统设计与实践

基于AI视觉的零售智能防损系统设计与实践

1. 项目背景与核心价值零售行业每年因商品损耗造成的损失高达千亿级别,传统防损手段主要依赖人工巡检和监控录像抽查,存在响应滞后、人力成本高、漏检率高等痛点。我们团队基于计算机视觉和边缘计算技术,打造了一套智能化的无人巡店防损系统&…

2026/7/26 7:14:38阅读更多 →
【Qt + OpenCASCADE】实现 SolidWorks 风格的装配树(附完整代码)

【Qt + OpenCASCADE】实现 SolidWorks 风格的装配树(附完整代码)

一、目的 实现像 SolidWorks 那样: 左边是结构树,右边是 3D 视图,选中树节点 → 对应 3D 实体变为亮色(高亮);勾选/取消勾选树节点 → 对应 3D 实体在视图中显示/消失 二、效果 三、实现 QTreeViewQAbs…

2026/7/26 7:14:38阅读更多 →
C++内联函数:原理、应用与性能优化实战指南

C++内联函数:原理、应用与性能优化实战指南

1. 从“函数调用”说起:为什么我们需要内联函数?写C代码,尤其是性能敏感的程序时,你肯定遇到过这样的纠结:某个函数逻辑很简单,比如就是比较两个数的大小,或者做一次简单的位运算。把它单独封装…

2026/7/26 7:14:38阅读更多 →
Python RPA自动化安全扫描:集成SonoQuest实现漏洞管理全流程

Python RPA自动化安全扫描:集成SonoQuest实现漏洞管理全流程

1. 项目概述:当RPA遇见安全工具如果你是一名安全工程师、运维人员,或者任何需要与安全扫描工具打交道的开发者,那么你肯定对重复、繁琐的手动操作深恶痛绝。每天登录SonoQuest(一款知名的开源安全扫描与漏洞管理平台)的…

2026/7/26 7:14:38阅读更多 →
小波神经网络在金融时间序列预测中的实战应用

小波神经网络在金融时间序列预测中的实战应用

1. 项目概述:小波神经网络在时间序列预测中的应用在金融数据分析领域,股票价格预测一直是个极具挑战性的课题。传统的时间序列分析方法(如ARIMA)往往难以捕捉市场中的非线性特征和突变信号。我在实际项目中尝试将小波变换与神经网…

2026/7/26 7:12:38阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →