news 2026/6/10 13:28:48

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/29 7:22:39

如何通过 API 实现外部群消息的“智能触发”与“无感推送”

QiWe开放平台提供了后台直登功能&#xff0c;登录成功后获取相关参数&#xff0c;快速Apifox在线测试&#xff0c;所有登录功能都是基于QiWe平台API自定义开发。 在企业微信生态中&#xff0c;外部群主动推送消息&#xff08;通过 API 实现&#xff09;是连接企业后台数据与前…

作者头像 李华
网站建设 2026/6/9 21:39:15

Cursor Pro功能使用指南:高效利用免费资源的实用技巧

Cursor Pro功能使用指南&#xff1a;高效利用免费资源的实用技巧 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tria…

作者头像 李华
网站建设 2026/6/7 13:16:46

联邦学习可能性探讨:在不共享数据下协同优化IndexTTS 2.0

联邦学习赋能 IndexTTS 2.0&#xff1a;隐私安全下的分布式语音合成新范式 在生成式AI席卷内容创作领域的今天&#xff0c;语音合成技术正从“能说”迈向“说得像人”。B站开源的 IndexTTS 2.0 凭借其高自然度、强可控性与零样本音色克隆能力&#xff0c;迅速成为虚拟主播、影…

作者头像 李华
网站建设 2026/5/30 4:50:16

拖拽上传体验:简化IndexTTS 2.0文件导入流程

拖拽上传体验&#xff1a;简化 IndexTTS 2.0 文件导入流程 在短视频、虚拟主播和互动内容爆发的今天&#xff0c;语音合成早已不再是“把文字念出来”那么简单。创作者真正需要的是——贴角色、对口型、有情绪、像真人的声音。然而&#xff0c;传统 TTS 系统要么音质生硬&#…

作者头像 李华
网站建设 2026/6/9 21:30:19

ANARCI终极指南:5分钟掌握抗体序列编号与分类

ANARCI终极指南&#xff1a;5分钟掌握抗体序列编号与分类 【免费下载链接】ANARCI Antibody Numbering and Antigen Receptor ClassIfication 项目地址: https://gitcode.com/gh_mirrors/an/ANARCI ANARCI&#xff08;抗体编号与抗原受体分类&#xff09;是牛津大学蛋白…

作者头像 李华
网站建设 2026/5/11 4:31:49

全方位掌握PKSM:从零开始的宝可梦存档管理专家指南

全方位掌握PKSM&#xff1a;从零开始的宝可梦存档管理专家指南 【免费下载链接】PKSM Gen I to GenVIII save manager. 项目地址: https://gitcode.com/gh_mirrors/pk/PKSM 还在为不同世代宝可梦游戏的存档管理而头疼吗&#xff1f;PKSM这款强大的开源存档管理器&#x…

作者头像 李华