C++ - const
以下内容参考自《程序员面试宝典》一指针常量 常量指针关于const修饰指针的情况可以分为以下4种情况int b 1; const int* a b; // case 1 int const *a b; // case 2 int* const a b; // case 3 const int* const a b; // case 4如果const位于星号的左侧则const就是用来修饰指针所指向的变量即指针指向为常量指针常量e.g. case 1和case 2如果const位于星号的右侧则const就是修饰指针本身即指针本身是常量常量指针e.g. case 3。对于指针常量我们不允许对指针指向地址的内容进行更改。e.g.int b 1; const int* a b; *a 0; // error但是可以通过其他方式来修改*a的值1通过改变b的值int b 1; const int* a b; b 0; cout *a endl; // 02使a指向另一处地址int b 1; const int* a b; int c 0; a c; cout *a endl; // 0对于指针常量可以先不进行初始化。因为虽然指针内容是常量但是指针本身不是常量。e.g.const int* a; // 编译通过对于常量指针我们不能使指针指向另一处地址因为指针本身是一个常量也正因如此在定义时就需要初始化。e.g.int b 1; int* const a; // error需要初始化 int* const a b; *a 0; // 编译通过允许对指向地址的值就行修改 cout a endl; // error不允许对指向的地址进行修改对于case 4则是严格要求指针和指针指向地址的值都是常量那么就是只能作为右值了。二const成员函数为了使成员函数的意义更加清楚我们可以在不改变对象的成员函数的函数原型中加上const。e.g.class A{ private: int a; public: int getA() const; }; // 关键字const必须在函数声明与函数实现中保持一致否则编译器会把它们看成不同的函数 int A::getA() const{ return a; }如果const成员函数中试图修改成员变量或者调用另一个非const成员函数编译器将会报错cannot assign to non-static data member within const member function getA。但是对于静态变量不过要注意静态变量一定要初始化或者是带有mutable关键字修饰的成员变量则是可以编译通过的。e.g.class A{ private: int a; static int b; mutable int c; public: int getA() const; }; int A::b 0; // 关键字const必须在函数声明与函数实现中保持一致否则编译器会把它们看成不同的函数 int A::getA() const{ b; c--; return a; }如果把const放在函数声明的前面那么就意味着函数的返回值是常量意义就完全不同了。三const #defineC可以用const定义常量也可以用#define定义常量但是前者比后者有更多的优点const常量有数据类型而宏定义常量没有数据类型。编译器可以对前者进行类型安全检查而对后者只进行字符替换没有类型安全检查并且在字符替换中可能会产生意料不到的错误边际效应——由于边缘运算符优先级较高而先对边缘进行运算。有些集成化的调试工具可以对const常量进行调试但是不能对宏定义常量进行调试。

相关新闻

物联网设备硬件安全方案与SE050开发实践

物联网设备硬件安全方案与SE050开发实践

1. 为什么物联网设备需要硬件级安全方案在2023年某智能家居设备大规模入侵事件中,攻击者通过破解弱加密的固件签名机制,远程控制了超过20万台设备。这个案例暴露出传统软件安全方案的致命缺陷——当MCU本身被攻破时,所有存储在Flash中的密钥和…

2026/10/26 6:50:48 阅读更多 →
vue简易项目流程思路简述

vue简易项目流程思路简述

\(^o^)/~1、首先得创建一个vue项目 cnpm install vue/cli -g 安装全局vue-cli脚手架,用于帮助搭建所需的模板框架 vue create myapp 或 vue ui 或者直接找一个打包好的项目解压即可 2、创建基本结构(抽离页面组件和底部组件) 共同组件例如Footer抽离至co…

2026/10/24 10:13:29 阅读更多 →
Trae工具结合Rag技术实现高效检索增强生成

Trae工具结合Rag技术实现高效检索增强生成

1. 项目概述:当Trae遇上Rag技术 第一次听说Trae这个工具是在一个技术社区里,当时看到有人用它来调试C项目,效率比传统IDE高不少。作为一个常年和代码打交道的开发者,我立刻被这个号称"understand-anything"的工具吸引了…

2026/10/25 15:51:52 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 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/26 12:00:19 阅读更多 →
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/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练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/26 8:34:37 阅读更多 →