news 2026/5/16 16:09:40

38.一文分清:const int p/int* const p 等写法差异

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
38.一文分清:const int p/int* const p 等写法差异

先明确核心规则

const的作用是修饰“其右侧的内容”为只读(不可修改),判断时只需看const挨着谁:

  • 若挨着变量名 → 变量值不可改;
  • 若挨着指针符号*→ 指针指向的内容不可改;
  • 若既挨着*又挨着变量名 → 指针指向的内容 + 指针本身都不可改。

逐一拆解四种写法的区别

1.const int pint const p(无指针,修饰普通变量)

结论:这两种写法完全等价

  • 含义:定义一个只读的整型变量 p,p 的值一旦初始化就不能修改。
  • 示例代码:
#include <stdio.h> int main() { const int p = 10; // 等价于 int const p = 10; // p = 20; // 编译报错!const修饰的变量值不可修改 printf("p = %d\n", p); // 仅能读取,输出:p = 10 return 0; }
  • 关键:无指针时,const放在int前/后没有区别,都是限制变量值不可改。
2.const int *p(指针,const 修饰*p

含义:定义一个指针 p,const修饰的是*p(指针指向的内容),即:

  • 指针 p 本身可以修改(能指向其他地址);
  • 指针指向的内容*p不可修改(只读)。
  • 示例代码:
#include <stdio.h> int main() { int a = 10, b = 20; const int *p = &a; // p指向a,*p不可改 // *p = 100; // 编译报错!指向的内容只读 p = &b; // 合法!指针本身可以改,现在p指向b printf("*p = %d\n", *p); // 输出:*p = 20 return 0; }
3.int * const p(指针,const 修饰 p)

含义:定义一个指针 p,const修饰的是 p(指针本身),即:

  • 指针 p 本身不可修改(不能指向其他地址);
  • 指针指向的内容*p可以修改。
  • 示例代码:
#include <stdio.h> int main() { int a = 10, b = 20; int * const p = &a; // p指向a,指针本身不可改 *p = 100; // 合法!指向的内容可以改 // p = &b; // 编译报错!指针本身只读 printf("*p = %d\n", *p); // 输出:*p = 100 return 0; }
4.const int * const p(双重 const 修饰指针)

含义const既修饰*p又修饰 p,是“只读指针 + 只读内容”,即:

  • 指针 p 本身不可修改(不能指向其他地址);
  • 指针指向的内容*p也不可修改。
  • 示例代码:
#include <stdio.h> int main() { int a = 10, b = 20; const int * const p = &a; // 双重只读 // *p = 100; // 编译报错!指向的内容只读 // p = &b; // 编译报错!指针本身只读 printf("*p = %d\n", *p); // 仅能读取,输出:*p = 10 return 0; }

总结

  1. 无指针时,const int pint const p完全等价,都是普通变量值不可改;
  2. 有指针时,看const位置:挨着*则“指向的内容不可改”,挨着指针名则“指针本身不可改”;
  3. 双重constconst int * const p)是最严格的,指针和指向的内容都只读。

记住核心口诀:const 修饰其右侧的内容,就能快速判断所有写法的含义。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 13:02:47

向后兼容承诺:老用户能否继续使用旧版IndexTTS 2.0功能

向后兼容承诺&#xff1a;老用户能否继续使用旧版IndexTTS 2.0功能 在内容创作日益自动化、虚拟交互不断深化的今天&#xff0c;语音合成技术早已不再是“能说话就行”的初级工具。对于视频UP主、AI主播开发者和有声书制作人而言&#xff0c;他们真正需要的是——一句话说得像…

作者头像 李华
网站建设 2026/5/13 22:54:08

Wwise音频文件处理终极指南:轻松解包、替换游戏音效

Wwise音频文件处理终极指南&#xff1a;轻松解包、替换游戏音效 【免费下载链接】wwiseutil Tools for unpacking and modifying Wwise SoundBank and File Package files. 项目地址: https://gitcode.com/gh_mirrors/ww/wwiseutil 还在为游戏音频文件无法编辑而烦恼吗&…

作者头像 李华
网站建设 2026/5/14 3:56:06

CUDA版本不匹配怎么办?IndexTTS 2.0常见环境难题解答

CUDA版本不匹配怎么办&#xff1f;IndexTTS 2.0常见环境难题解答 在语音合成技术飞速演进的今天&#xff0c;越来越多开发者开始尝试将自回归零样本模型应用于虚拟主播、影视配音和有声内容创作。B站开源的 IndexTTS 2.0 正是这一浪潮中的佼佼者——它不仅能用几秒音频克隆音色…

作者头像 李华
网站建设 2026/5/10 23:50:57

计算机毕业设计springboot铁路行车风雨警戒通知发布系统 基于SpringBoot的铁路风雨预警与调度通知平台 SpringBoot框架下铁路恶劣天气行车警示信息发布系统

计算机毕业设计springboot铁路行车风雨警戒通知发布系统55i09467 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。当暴雨突袭、大风卷起&#xff0c;列车是否降速、区间是否封锁&…

作者头像 李华
网站建设 2026/5/11 15:25:12

人工智能的三大挑战与TiDB的破局之道:从数据根基到智能未来

作者&#xff1a; 数据源的TiDB学习之路 原文来源&#xff1a; https://tidb.net/blog/1027ba17 近年来&#xff0c;人工智能技术以前所未有的速度向前跃进&#xff0c;大模型、智能体、生成式AI等概念不断刷新我们对技术的认知。然而&#xff0c;在光鲜的技术表象之下&…

作者头像 李华
网站建设 2026/5/13 19:58:56

JSON编辑器终极指南:从零基础到高效掌握数据可视化编辑

JSON编辑器终极指南&#xff1a;从零基础到高效掌握数据可视化编辑 【免费下载链接】jsoneditor A web-based tool to view, edit, format, and validate JSON 项目地址: https://gitcode.com/gh_mirrors/js/jsoneditor 无论你是前端开发者、数据分析师还是普通用户&…

作者头像 李华