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/7/28 13:51:34 阅读更多 →
vue简易项目流程思路简述

vue简易项目流程思路简述

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

2026/7/28 13:51:34 阅读更多 →
Trae工具结合Rag技术实现高效检索增强生成

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

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

2026/7/28 13:51:34 阅读更多 →

最新新闻

架构师必备:分布式锁方案选型

架构师必备:分布式锁方案选型

当同时操作共享资源时,需要做并发控制。在单机上用synchronized或ReentrantLock能解决的互斥问题,到了多机部署的分布式环境就行不通了,因为它们只在单个JVM进程内生效,跨多机就需要分布式锁了。 先说结论,最常用的分…

2026/7/28 14:38:17 阅读更多 →
物联网设备电源管理:NBM7100A芯片与低功耗优化实践

物联网设备电源管理:NBM7100A芯片与低功耗优化实践

1. 项目背景与核心挑战在物联网终端设备和便携式医疗设备领域,不可充电的初级电池(如锂亚硫酰氯电池、CR2032纽扣电池)因其高能量密度和超长保存寿命(可达10年以上)成为首选电源方案。但这类电池存在一个鲜为人知的致命…

2026/7/28 14:38:17 阅读更多 →
如何用MemcardRex终极PS1记忆卡编辑器解决存档管理难题

如何用MemcardRex终极PS1记忆卡编辑器解决存档管理难题

如何用MemcardRex终极PS1记忆卡编辑器解决存档管理难题 【免费下载链接】memcardrex Advanced PlayStation 1 Memory Card editor 项目地址: https://gitcode.com/gh_mirrors/me/memcardrex 还在为PS1游戏存档无法跨平台使用而烦恼吗?MemcardRex作为一款专业…

2026/7/28 14:38:17 阅读更多 →
涨薪技术|使用Dockerfile创建镜像

涨薪技术|使用Dockerfile创建镜像

上次的推文内容中介绍了如何使用docker commit的方法来构建镜像,相反推荐使用被称为Dockerfile的定义文件和docker build命令来构建镜像。Dockerfile使用基本的基于DSL语法的指令来构建一个Docker镜像,之后使用docker build命令基于该Dockerfile中的指令…

2026/7/28 14:38:17 阅读更多 →
关于ArrayList  LinkedList remove()方法的一点思考,更改或删除抽象数据类型的值

关于ArrayList LinkedList remove()方法的一点思考,更改或删除抽象数据类型的值

对于基本数据类型和常见的抽象数据类型不做考虑 针对的是由程序编写者创建的抽象数据类型 通过查看API文档,提供了一个remove(Object O)方法** 一. 首先想到的是逐个比较不同节点里的数据,list.remove(index i); ** import java.util.*;/****…

2026/7/28 14:38:17 阅读更多 →
JAVA毕设选题推荐:基于SpringBoot 架构下智能教学辅助咨询系统 人机交互式课程答疑与学习辅助系统【附源码、mysql、文档、调试+代码讲解+全bao等】

JAVA毕设选题推荐:基于SpringBoot 架构下智能教学辅助咨询系统 人机交互式课程答疑与学习辅助系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 14:37:17 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻