C++ 常量详解:从基础到高级应用
1. 什么是常量在 C 中常量Constant是指在程序运行期间其值不能被修改的标识符。使用常量可以提高代码的可读性、可维护性和安全性避免意外修改重要数据。2. 常量的声明与定义2.1 const 关键字使用const关键字声明常量const int MAX_SIZE 100; const double PI 3.1415926535; const std::string APP_NAME MyApplication;2.2 constexpr 关键字C11 起constexpr表示常量表达式在编译时就能确定值constexpr int ARRAY_SIZE 1024; constexpr double GRAVITY 9.8;3. 常量指针与指向常量的指针3.1 指向常量的指针指针指向的内容是常量不能通过指针修改内容const int* ptr; // ptr 可以指向不同的常量 int value 10; ptr value; // *ptr 20; // 错误不能修改指向的内容3.2 常量指针指针本身是常量不能指向其他地址int* const ptr value; // ptr 必须初始化 // ptr other; // 错误不能修改指针的指向 *ptr 20; // 正确可以修改指向的内容3.3 指向常量的常量指针指针和指向的内容都是常量const int* const ptr value; // ptr other; // 错误不能修改指针 // *ptr 20; // 错误不能修改内容4. 常量成员函数在类中常量成员函数承诺不修改对象的成员变量class MyClass { private: int value; public: int getValue() const { // 常量成员函数 return value; } void setValue(int v) { // 非常量成员函数 value v; } };5. 常量引用常量引用可以绑定到临时对象常用于函数参数void printValue(const int ref) { std::cout ref std::endl; // ref 10; // 错误不能修改常量引用 } int main() { int x 5; printValue(x); // 正确 printValue(10); // 正确可以绑定到临时对象 return 0; }6. 常量在实践中的应用6.1 配置参数// 配置文件常量 const std::string DATABASE_HOST localhost; const int DATABASE_PORT 3306; const int MAX_CONNECTIONS 100;6.2 数学常量namespace MathConstants { constexpr double PI 3.141592653589793; constexpr double E 2.718281828459045; constexpr double GOLDEN_RATIO 1.618033988749895; }6.3 枚举常量enum class Color { RED 0xFF0000, GREEN 0x00FF00, BLUE 0x0000FF }; constexpr Color DEFAULT_COLOR Color::BLUE;7. const 与 constexpr 的区别特性constconstexpr初始化时机运行时或编译时必须在编译时适用场景变量、指针、引用、成员函数变量、函数、构造函数数组大小不能用于静态数组大小可以用于静态数组大小C 版本C98C118. 最佳实践建议优先使用 constexpr对于编译期能确定的值使用constexpr可以获得更好的性能明确常量类型避免使用宏定义常量使用类型安全的const或constexpr合理使用常量引用函数参数如果不修改传入对象应使用常量引用常量成员函数不修改对象状态的成员函数都应声明为const命名规范常量通常使用全大写字母和下划线命名9. 常见问题与解决方案9.1 常量初始化问题// 错误未初始化的常量 // const int x; // 编译错误 // 正确必须初始化 const int x 10;9.2 常量与指针的混淆int value 10; const int* ptr1 value; // 指向常量的指针 int* const ptr2 value; // 常量指针 // 记住const 在 * 左边修饰内容在 * 右边修饰指针9.3 常量成员函数的限制class MyClass { mutable int counter; // 使用 mutable 允许在常量成员函数中修改 public: void increment() const { counter; // 正确counter 被声明为 mutable } };

相关新闻

网盘直链下载助手LinkSwift:九大网盘一键获取真实下载链接的完整指南

网盘直链下载助手LinkSwift:九大网盘一键获取真实下载链接的完整指南

网盘直链下载助手LinkSwift:九大网盘一键获取真实下载链接的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…

2026/7/11 13:59:53阅读更多 →
从源码到部署:mlx-community/GLM-5.2-4bit的MLX格式转换全过程揭秘

从源码到部署:mlx-community/GLM-5.2-4bit的MLX格式转换全过程揭秘

从源码到部署:mlx-community/GLM-5.2-4bit的MLX格式转换全过程揭秘 【免费下载链接】GLM-5.2-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/GLM-5.2-4bit mlx-community/GLM-5.2-4bit是一个基于MLX框架优化的4位量化模型,由…

2026/7/11 13:54:53阅读更多 →
效能度量指标怎么选?研发团队的DORA指标与流动效率解析

效能度量指标怎么选?研发团队的DORA指标与流动效率解析

研发效能度量是研发管理中最容易“翻车”的环节之一——选错了指标,团队会陷入“为度量而度量”的陷阱;选对了指标,才能看清交付瓶颈并驱动持续改进。 这篇文章从DORA指标和流动效率两个维度入手,拆解它们的定位、适用场景以及如…

2026/7/11 13:54:53阅读更多 →
鹤壁办婚宴,烟酒怎么备不浪费又体面?

鹤壁办婚宴,烟酒怎么备不浪费又体面?

我在鹤壁淇滨区开了多年烟酒店。 每天接触最多的就是来买酒的顾客。 说实话,很多人办宴席时不知道该备多少酒。 今天分享几点经验,希望对你有帮助。 算用量:按桌数和人头来估,最稳当 在鹤壁,一场婚宴的酒水用量估算至…

2026/7/11 14:59:59阅读更多 →
cann/runtime主机内存管理

cann/runtime主机内存管理

11-02 主机内存管理 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 本章节描述主机(Host)内存的分配、释放、注册及指针获取接口。 aclError aclrtMallocHost(void **hostPtr,…

2026/7/11 14:59:59阅读更多 →
《LeetCode 152 乘积最大子数组 || LeetCode 413 等差数列划分》

《LeetCode 152 乘积最大子数组 || LeetCode 413 等差数列划分》

一、题目二、做题思路2.1 状态表示(核心基础)本题要求计算数组中乘积最大的连续子数组。由于负数相乘可能反转大小关系,仅记录最大乘积不够,还需记录最小乘积。因此定义两个状态:f[i] 表示以 nums[i] 结尾的子数组的最…

2026/7/11 14:59:59阅读更多 →
终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验?

终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验?

终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验? 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod 还在为《鸣潮》游戏中的重复刷怪、技能冷却和资源收集而烦恼吗&a…

2026/7/11 14:59:59阅读更多 →
Windows 10用户终于等到了:微软原生容器方案WSL Containers实测与部署详解

Windows 10用户终于等到了:微软原生容器方案WSL Containers实测与部署详解

年初微软悄然推出了一项让不少开发者眼前一亮的新能力——WSL Containers。这个名字听起来像是WSL的某个插件,实际上它是一个完全内嵌在Windows Subsystem for Linux里的原生容器平台。换句话说,你的Windows系统本身就能直接跑容器,不再需要额…

2026/7/11 14:59:59阅读更多 →
【代码随想录算法训练营第32天】动态规划part01 | 理论基础 | 509. 斐波那契数 | 70. 爬楼梯 | 746. 使用最小花费爬楼梯

【代码随想录算法训练营第32天】动态规划part01 | 理论基础 | 509. 斐波那契数 | 70. 爬楼梯 | 746. 使用最小花费爬楼梯

文章目录 KEY509. 斐波那契数完整代码 70. 爬楼梯整个代码: 746. 使用最小花费爬楼梯整个代码: KEY 简单,不用看这次的笔记。 509. 斐波那契数 太简单,不用管。 注意这个细节: if (n0) return 0; if (n1) return 1;…

2026/7/11 14:54:59阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/10 12:29:21阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
Premiere Pro 2025安装失败原因与AGSIS验证绕过指南

Premiere Pro 2025安装失败原因与AGSIS验证绕过指南

1. 为什么2025版PR安装比以往更“磨人”?——从弹窗警告到路径陷阱的真实处境 Premiere Pro 2025版不是简单的一次版本迭代,它是一道分水岭。我从去年底开始帮影视工作室、高校剪辑实验室和自由职业者部署2025环境,累计处理了137台设备&#…

2026/7/11 0:03:43阅读更多 →
5款实用macOS系统优化工具:让你的Mac运行更流畅更高效

5款实用macOS系统优化工具:让你的Mac运行更流畅更高效

5款实用macOS系统优化工具:让你的Mac运行更流畅更高效 【免费下载链接】open-source-mac-os-apps 🚀 Awesome list of open source applications for macOS. https://t.me/s/opensourcemacosapps 项目地址: https://gitcode.com/gh_mirrors/op/open-so…

2026/7/11 0:03:43阅读更多 →
5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想要让AI图像生成真正听从你的指挥吗&…

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

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

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

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

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

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

2026/7/10 22:20:33阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

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

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

2026/7/10 17:29:22阅读更多 →