小学生学C++编程语法知识(C++中的 const 详解)
C中的 const 详解同学们上一节我们学习了staticstatic 解决的是“东西活多久、谁能访问”。今天学习另一个非常重要的关键词const它解决的是这个东西能不能被修改一、const是什么const 是constant的缩写。意思常量不可改变。例如普通变量int age 10; age 11;可以修改。但是const int age 10; age 11;错误因为const int age表示age 是一个不能改变的数字。同学们理解普通变量像铅笔盒里的铅笔 可以拿出来换const变量像写在毕业证上的名字 不能随便修改二、const修饰变量1. const基本用法#includeiostream using namespace std; int main() { const int MAX 100; cout MAX; }这里MAX表示最大值。以后不能MAX200;为什么程序员喜欢用const例如const double PI3.1415926;如果不用double PI3.1415926;程序员可能不小心PI5;导致错误。所以const是一种保护机制。三、const修饰指针重点指针是C难点。const和指针结合有三种情况。情况1指针指向的内容不能改代码int a10; const int *pa;意思p指向的数字不能通过p修改例如*p20;错误但是a20;可以。为什么因为p只是说我不能改别人。不是a不能改。图a ---- | 10 | ---- ^ | p 不能 *p20 可以 a20情况2指针本身不能改变代码int a10; int * const pa;意思p这个指针固定了。例如pb;错误。但是*p20;可以。因为地址不能换但是地址里面的数据可以改。理解p是一把固定钥匙 钥匙不能换 但是可以打开箱子修改东西情况3指针和内容都不能改代码const int * const pa;表示两个都禁止不能*p20;也不能pb;四、const修饰函数参数工程中大量使用。例如void print(int x) { }普通参数函数可能修改x。如果void print(const int x) { }表示函数内部不能修改x。但是对于int来说意义不大。更重要的是const 引用例如void show(const string s) { }什么意思拆开const 不能修改 string 不用复制提高效率合起来只读引用。为什么需要例如有一个很大的字符串string s;如果void fun(string s)调用fun(s);会复制一份。浪费空间。使用void fun(const string s)只传地址。但是不能修改。这就是C工程中最常见写法。五、const修饰函数返回值例如const int get() { return 10; }表示返回值不能修改。不过对于基本类型意义不大。常见const string getName() { return name; }表示返回一个引用。但是不能修改。六、重点const成员函数这是今天的核心。很多初学者第一次看到class Student { public: void show() const; };会疑惑为什么函数后面还有const我们先看普通成员函数class Student { int age; public: void setAge(int x) { agex; } };这个函数会修改对象。但是如果void show() { coutage; }它只是查看。没有修改。我们希望告诉编译器这个函数保证不会改变对象。所以写void show() const { coutage; }七、const成员函数本质例如class Student { int age; public: void show() const { } };后面的const表示隐藏的this指针从Student *this变成const Student *this也就是说函数内部不能修改成员变量。例如正确void show() const { coutage; }错误void show() const { age20; }为什么因为this是const Student*不能修改对象。八、为什么需要const成员函数看一个例子class Student { int age; public: Student(int a) { agea; } void show() { coutage; } };现在创建一个const对象const Student s(10);调用s.show();错误为什么因为s是不能改变的学生但是show()没有保证不会改变。改成void show() const { coutage; }就可以。九、实际应用STL中的const例如vectorvectorint v;很多函数size()就是size() const为什么因为查看长度v.size();不会改变vector。strings.length();也是const函数。十、const和static区别总结关键字作用static改变生命周期、共享const禁止修改、保护数据记忆static: 这个东西活多久 const: 这个东西能不能改十一、竞赛中const常见场景1. 大数组传递错误void solve(vectorint a)会复制。推荐void solve(const vectorint a)含义不复制 不能修改2. 类里面查询函数例如class Node { public: int value; int getValue() const { return value; } };3. 防止代码错误例如const int N100005;数组大小int a[N];避免被修改。十二、一句话口诀const变量出生以后不能改变。const指针看const靠近谁谁不能动。const参数传过来只看不改。const成员函数承诺自己只读对象不改变成员。课后思考题下面代码哪里错误class Student { int age; public: void show() const { age10; coutage; } };答案错误age10;原因show()是 const成员函数。它承诺我不会修改Student对象。所以this相当于const Student*成员变量只能读不能写。

相关新闻

【革新体验】Universal-Updater:如何让3DS自制软件管理变得像手机应用商店一样简单

【革新体验】Universal-Updater:如何让3DS自制软件管理变得像手机应用商店一样简单

【革新体验】Universal-Updater:如何让3DS自制软件管理变得像手机应用商店一样简单 【免费下载链接】Universal-Updater An easy to use app for installing and updating 3DS homebrew 项目地址: https://gitcode.com/gh_mirrors/un/Universal-Updater 你是…

2026/10/19 1:49:04 阅读更多 →
终极植物大战僵尸修改器:PvZ Toolkit完全指南

终极植物大战僵尸修改器:PvZ Toolkit完全指南

终极植物大战僵尸修改器:PvZ Toolkit完全指南 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 你是否曾经在《植物大战僵尸》的无尽模式中苦苦挣扎?是否想要创造独特的游戏体…

2026/10/18 7:29:17 阅读更多 →
如何彻底告别Wand每日2小时限制:完整免费解决方案揭秘

如何彻底告别Wand每日2小时限制:完整免费解决方案揭秘

如何彻底告别Wand每日2小时限制:完整免费解决方案揭秘 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 你是否厌倦了每次游戏修改时被2小…

2026/10/18 22:23:02 阅读更多 →

最新新闻

DeskcommCRM实战:轻量级客户管理与销售跟进全流程落地指南

DeskcommCRM实战:轻量级客户管理与销售跟进全流程落地指南

1. 项目概述:DeskcommCRM 到底是什么,以及为什么值得关注这两年市面上叫 CRM 的产品多得数不过来,但绝大多数都陷入了一个怪圈:功能越做越重,权限越加越细,你要是只为了管好手头几百个客户,得先…

2026/10/19 23:47:06 阅读更多 →
以沟通为核心的轻量级CRM系统设计与实践

以沟通为核心的轻量级CRM系统设计与实践

一个叫 DeskcommCRM 的项目,听起来有点像某个内部系统的代号,但实际上它代表了一类特别值得聊的东西:以“沟通”为核心的客户关系管理工具。我一开始接触这个项目名的时候,第一反应是“Deskcomm”可能是 Desk Communication 的缩写…

2026/10/19 23:47:06 阅读更多 →
从线程池失控到全局限流:高并发系统稳定性实战指南

从线程池失控到全局限流:高并发系统稳定性实战指南

1. 并发失控的第一现场:线程池是怎么被击穿的先说一个我实际排查过的案例场景。某公司核心交易链路的订单服务,平时性能表现很稳定,高峰期单机支撑上千QPS没有任何压力。但一次大促活动中,下游的库存服务因为数据库连接池被打满&a…

2026/10/19 23:39:50 阅读更多 →
STC单片机范例程序实战指南:从点灯到多外设工程搭建

STC单片机范例程序实战指南:从点灯到多外设工程搭建

简介:这是一份面向嵌入式初学者与单片机开发者的STC单片机C语言范例程序合集,围绕ADC采样、串口通信、EEPROM读写、ISP在系统编程、时钟中断、端口测试及优化编程思想等核心功能展开,适合用于课程实验、自学练手与项目参考。资源包共612个文件…

2026/10/19 23:39:50 阅读更多 →
Kafka全链路性能调优:吞吐量与延迟的实战权衡

Kafka全链路性能调优:吞吐量与延迟的实战权衡

前阵子业务告警群里又炸了——消费延迟从平时的几百毫秒一路飙到分钟级,P99 延迟曲线在监控面板上直接拉成一条陡坡。接手这套 Kafka 系统两年,类似的戏码每隔一阵就重演一次。与其每次都临时救火,不如把全链路参数优化这件事系统捋一遍。这篇…

2026/10/19 23:37:47 阅读更多 →
ZXing.Net 0.16.8.0 条码识别实战:从解码链路到性能调优

ZXing.Net 0.16.8.0 条码识别实战:从解码链路到性能调优

简介:ZXing.Net.0.16.8.0 是面向 C# 与 Unity 开发者的开源条码处理库,基于 Zebra Crossing 项目,可在 .NET 框架与 Unity 引擎中实现 QR 码、Aztec、Code 128、EAN 等多种条码的读取与生成。开发者只需调用少量 API 即可为桌面应用、移动端或…

2026/10/19 23:37:47 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →