C++起步知识

发布时间:2026/8/26 14:46:31

C++起步知识
目录1 域2 namespace 关键字2.1 命名空间的定义2.2 命名空间的使用2.3 命名空间的作用3 缺省参数4 函数重载5 引用5.1 引用的概念5.2 const 引用5.3 引用的使用场景5.4 引用和指针的区别6 inline 关键字7 nullptr1 域在 C 中域包括了函数局部域全局域命名空间域类域函数局部域由函数的大括号所包裹起来的区域局部变量所处的位置全局域不受大括号影响的区域全局变量所处的位置命名空间域由 namespace 关键字限制的区域类域由 class 或 struct 关键字限制的区域2 namespace 关键字2.1 命名空间的定义使用 namespace 关键字可以定义一个命名空间命名空间本身也是一个域命名空间内可以定义函数变量等并且命名空间只能在全局进行定义具体语法为namespace命名空间名称{//命名空间的内容}命名空间也可以嵌套定义namespaceA{inta0;namespaceB{intb0;}}2.2 命名空间的使用如果要访问命名空间中的内容有三种方式使用命名空间名字访问较为推荐的方法#includeiostreamusingnamespacestd;namespaceA{inta0;namespaceB{intb0;}}intmain(){//使用命名空间名字coutA::aendl;// ::为域作用限定符coutA::B::bendl;return0;}使用 using 将命名空间的某成员展开如果某成员不会发生命名冲突可以用这个方式展开#includeiostreamusingnamespacestd;namespaceA{inta0;namespaceB{intb0;}}//展开成员usingA::a;usingA::B::b;intmain(){coutaendl;coutbendl;return0;}使用 using 将整个命名空间展开这个方法在大项目中可能会存在命名冲突的问题不太推荐#includeiostreamusingnamespacestd;namespaceA{inta0;namespaceB{intb0;}}//展开整个命名空间usingnamespaceA;usingnamespaceB;intmain(){coutaendl;coutbendl;return0;}2.3 命名空间的作用在 C 语言中经常会因为调用了某个头文件而产生变量名与函数名的命名冲突问题命名空间就是为了处理这种问题而存在的比如#includestdlib.hintrand0;intmain(){coutrandendl;return0;}这段代码中定义了一个全局变量 rand但是头文件 stdlib.h 中有一个函数的名称也是 rand就导致命名冲突可以用命名空间来解决这个问题#includestdlib.hnamespaceA{intrand0;}intmain(){coutA::randendl;//使用命名空间A中的randrand();//调用rand函数return0;}3 缺省参数C在定义函数时可以在定义参数时给参数缺省值默认值这个参数就被叫做缺省参数在调用函数时如果没有传参那么就会使用该缺省值如果传参了就会使用传入的值具体形式为intfunc(intx0)//x为缺省参数有默认值0{coutxendl;}intmain(){func();return0;}缺省参数有全缺省和半缺省全缺省函数的每个参数都有自己的缺省值intAdd(intx0,inty0)//全缺省{returnxy;}intmain(){Add();return0;}半缺省函数的部分参数有自己的缺省值intAdd(intx,inty0)//半缺省{returnxy;}intmain(){Add(1);return0;}在语法规定中半缺省参数一定要从右往左进行缺省不能进行跳跃缺省intAdd(intx0,inty)//不能从左往右缺省{returnxy;}intfunc(inta0,intb,intc0)//不能跳跃缺省{//...}不管是全缺省还是半缺省在传参时参数列表必须是从左往右依次传入实参intfunc(inta0,intb0,intc0){//...}intmain(){func(1,1);//从左往右依次传参func(,,1);//不能从右往左传参return0;}函数的声明和定义中不能同时出现缺省值必须在声明中给缺省值4 函数重载函数重载主要会在下面几种情况下发生函数名相同形参列表变量个数相同但变量类型不同intAdd(intx,inty){returnxy;}doubleAdd(doublex,doubley){returnxy;}函数名相同形参列表变量类型相同但变量个数不同intAdd(intx,inty){returnxy;}intAdd(intx){returnx10;}函数名相同形参列表变量类型个数都不相同intAdd(intx,inty){returnxy;}doubleAdd(doublex){returnx10.0;}不会发生重载的情况函数名相同形参列表变量类型个数都相同但是返回值不同intAdd(intx,inty){returnxy;}doubleAdd(intx,inty){returnxy;}会发生重载但是无法判别函数的情况函数名相同但是一个是无参一个是全缺省参数voidfunc(){//...}voidfunc(inta0,intb0){//...}因为全缺省参数和无参的函数都可以不用传实参所以在调用时如果不传实参编译器无法判定使用哪个函数5 引用5.1 引用的概念定义一个引用就相当于是给一个变量取了别名引用在定义时是不开辟新空间的它和被引用的变量使用同一块内存空间C中可以使用来定义一个引用一个变量可以有多个引用intmain(){inta0;intraa;//给a取别名为rareturn0;}在使用引用时要注意引用必须要进行初始化intrb;//这种写法是错误的引用不能更改它的指向intmain(){inta0;intraa;intb0;rab;//赋值没有改变引用的指向return0;}把 b 赋值给 ra 的行为不是改变了 ra 的指向而是将 0 赋值给了 a5.2 const 引用用 const 修饰引用就是 const 引用const 引用可以对被引用的对象进行读取但是不能更改被引用对象的值const 引用可以用来引用普通对象和 const 修饰的对象但是不能用普通引用来引用 const 修饰的对象const 引用指向普通对象intmain(){inta0;constintraa;return0;}a 是普通的对象它即可读又可写ra 是 const 引用对引用的对象可读不可写权限进行了缩小const 引用指向 const 修饰的对象intmain(){constinta0;constintraa;return0;}a 是 const 修饰的对象它可读不可写ra 是 const 引用对引用的对象可读不可写权限进行了平移普通引用指向 const 修饰的对象intmain(){constinta0;intraa;return0;}a 是 const 修饰的对象它可读不可写ra 是普通引用对引用的对象可读可写权限进行了放大无法进行编译特殊情况C中如果发生了隐式类型转换或表达式求值都会产生一个临时对象用来存储结果临时对象具有常性如果要让引用指向这个临时对象那么该引用需要const 修饰intmain(){inta1;constintra(a2);constdoublerba;return0;}5.3 引用的使用场景函数在进行传值调用与返回的时候会对参数进行拷贝此时如果该参数占的空间较大则会耗费不少的时间来处理引用主要是在函数传参和返回时使用用来减少函数传参和返回时产生的拷贝和在函数体内改变对象constintAdd(intra,intrb){returnrarb;}intmain(){inta0;intb1;Add(a,b);return0;}在引用作返回值时需要注意引用也会存在野引用的问题intfunc(){inta0;intraa;returna;}intmain(){func();return0;}func 内定义了 a返回了 a 的引用但是 a 是局部变量所以函数结束时会销毁那么 ra 就会变成野引用5.4 引用和指针的区别在C中引用和指针相辅相成各有各的特点在定义时引用是不开辟新空间的只是一个变量的别名指针则需要开辟空间来保存地址在初始化时引用必须要进行初始化否则会有编译错误指针建议初始化但不是必须的在修改时引用不能修改指向指针则可以通过修改保存的地址来变更指向在大小上引用的大小就是指向的对象的大小指针的大小在 32 位机器下是 4B64位机器下是 8B在访问上引用直接可以访问指向的对象指针则需要解引用来访问在安全性上引用一般不存在空引用和野引用的问题指针则会存在空指针和野指针的问题引用相对更为安全6 inline 关键字C 语言中可以把逻辑较为简短的函数写成宏的形式减少函数调用时栈帧创建的时间损耗但是写成宏容易出现问题所以 C 引入了 inline 关键字inline 是用来修饰函数的关键字被它修饰的函数叫内联函数编译时会在调用内联函数的地方将它展开不需要创建栈帧即可使用函数提升了效率也避免了宏的问题毕竟写函数一般都不会写错inlineintAdd(intx,inty)//内联函数{returnxy;}intmain(){Add(1,2);//直接展开return0;}需要注意的是并不是所有加了 inline 的函数都会直接展开这取决于编译器编译器会根据函数内代码的多少来斟酌展开代码量过多的函数如果成为内联函数并在很多地方展开那么会导致整个项目的代码量急剧上升效率下降因此一般只建议让代码量少的函数成为内联函数内联函数不支持声明和定义分离7 nullptrC 语言中NULL 是 void* 类型的常量可以用来给任何类型的指针赋值所以在函数调用时就能够匹配形参为指针类型的函数C 中NULL 被定义为了 0此时通过传 NULL 来调用函数时就会匹配至形参为整形的函数而非形参为指针类型的函数使用与 C 语言有所区别所以在C中定义了 nullptr 作为空指针它可以用来给任何类型的指针赋值intfunc(int*p){coutfunc(int*)endl;}intfunc(intx){coutfunc(int)endl;}intmain(){func(NULL);//调用func(int x)func(nullptr);//调用func(int* p)return0;}

相关新闻

【Kingbase人大金仓】账号密码重置忘记密码重置

【Kingbase人大金仓】账号密码重置忘记密码重置

2026/8/26 14:46:31

目录 1、停止数据库服务: 2、修改配置文件(修改后可无需密码登录数据库): 3、启动数据库服务: 4、登录数据库: 5、登录数据库之后,执行修改设置账号密码命令: 6、修改配置文件…

DxWrapper 老游戏兼容修复:3 步让 Windows 10/11 重新跑得动老游戏

DxWrapper 老游戏兼容修复:3 步让 Windows 10/11 重新跑得动老游戏

2026/8/26 14:46:31

DxWrapper 老游戏兼容修复:3 步让 Windows 10/11 重新跑得动老游戏 【免费下载链接】dxwrapper Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into g…

如何在Neptune Mutual报告保险事故:Incident Report与Dispute争议完整用户指南

如何在Neptune Mutual报告保险事故:Incident Report与Dispute争议完整用户指南

2026/8/26 14:46:31

如何在Neptune Mutual报告保险事故:Incident Report与Dispute争议完整用户指南 【免费下载链接】app.neptunemutual.com 🔱 An open source interface for the Neptune Mutual App 项目地址: https://gitcode.com/gh_mirrors/ap/app.neptunemutual.com…

多模态内容的 AI 工业化生产与 GEO 适配规范

多模态内容的 AI 工业化生产与 GEO 适配规范

2026/8/26 15:56:34

【摘要】生成式搜索的引用路径正在从纯文本网页向图片、短视频、音频等多元模态扩展,组织的内容生产体系若仍以文本为中心,将失去大量被 AI 引用的场景覆盖。围绕多模态内容的 GEO 价值、AI 驱动工业化生产链路、图文视频音频的分模态适配规范与人机协同…

Maka Agent工作板完全指南:用AI助手管理你的待办与延迟任务

Maka Agent工作板完全指南:用AI助手管理你的待办与延迟任务

2026/8/26 15:56:34

Maka Agent工作板完全指南:用AI助手管理你的待办与延迟任务 【免费下载链接】maka Apache Maka (Incubating) is a local-first AI agent workspace. Model messages, tool calls, tool results, permission decisions, and termination events are recorded as an …

Qwen3.8-27B-Unleashed-GGUF完全指南:9档无审查LLM量化模型 + 262k上下文,本地推理新选择

Qwen3.8-27B-Unleashed-GGUF完全指南:9档无审查LLM量化模型 + 262k上下文,本地推理新选择

2026/8/26 15:56:34

Qwen3.8-27B-Unleashed-GGUF完全指南:9档无审查LLM量化模型 262k上下文,本地推理新选择 【免费下载链接】Qwen3.8-27B-Unleashed-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/outsourc-e/Qwen3.8-27B-Unleashed-GGUF Qwen3.8-27B-Unleas…

元初混沌体系 第三卷 卫星互联网全域周天拓扑体系:第二十九篇 区域流量激增拓扑动态扩容方案

元初混沌体系 第三卷 卫星互联网全域周天拓扑体系:第二十九篇 区域流量激增拓扑动态扩容方案

2026/8/26 15:56:34

第二十九篇 区域流量激增拓扑动态扩容方案承启前置 方案立论第二十八篇已完成低轨星座四维分域自治、分层分权管控、全域正交分区、域内自愈收敛体系的完整定型,彻底解决百万级巨型星座规模化、分布式、低耦合、高可靠的常态化管控难题,实现全域拓扑稳态…

临时要处理PDF,电脑又不在身边?自建Stirling-PDF在线工具箱

临时要处理PDF,电脑又不在身边?自建Stirling-PDF在线工具箱

2026/8/26 15:56:34

🔥承渊政道:个人主页 ❄️个人专栏: 《C语言基础语法知识》 《数据结构与算法》 《C知识内容》 《Linux系统知识》 《算法刷题指南》 《测评文章活动推广》 《大模型语言路线学习》 《MySQL数据库学习》 《Python知识内容》 《cpolar知识学习》 ✨逆境不…

Qwen3.8-2B-Distill-GGUF选文件教程:Q4_K_M到BF16共5种量化,一张表帮你选对模型

Qwen3.8-2B-Distill-GGUF选文件教程:Q4_K_M到BF16共5种量化,一张表帮你选对模型

2026/8/26 15:46:34

Qwen3.8-2B-Distill-GGUF选文件教程:Q4_K_M到BF16共5种量化,一张表帮你选对模型 【免费下载链接】Qwen3.8-2B-Distill-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/empero-ai/Qwen3.8-2B-Distill-GGUF Qwen3.8-2B-Distill-GGUF 是 Empero…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/26 1:50:39

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/26 1:49:16

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

2026/8/26 0:05:45

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

Hermes接入团队协作后,我推翻了三个效率假设

Hermes接入团队协作后,我推翻了三个效率假设

2026/8/26 0:05:45

聊《Hermes真能提效吗?先看流程里最慢的那一步》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要团队把 Hermes 接进项目三个月后,交付速度没有提升反而慢了。复盘后发现,最先…

免费AI大模型调教指南:打造专属网文写作助手

免费AI大模型调教指南:打造专属网文写作助手

2026/8/26 0:05:45

1. 先搞清楚“AI小说扩展模式”到底能帮你做什么如果你是一个刚开始写网文、或者卡在L3级别以下的作者,最头疼的可能是情节推进不下去、人物对话干瘪,或者世界观设定不够丰满。自己对着空白文档硬憋,效率很低。这时候,一个能理解你…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…