news 2026/11/6 9:52:40

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

作者头像

张小明

前端开发工程师

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

先明确核心规则

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

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

逐一拆解四种写法的区别

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

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

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

回归测试执行流程:防止新功能引入破坏原有特性

回归测试执行流程&#xff1a;防止新功能引入破坏原有特性 在语音合成系统日益复杂的今天&#xff0c;一个看似微小的代码改动&#xff0c;可能让原本流畅自然的语音变得机械僵硬——比如某次模型结构调整后&#xff0c;用户发现生成的音频时长不再对齐视频画面&#xff1b;又…

作者头像 李华
网站建设 2026/11/3 5:53:01

IEC 61850开源库终极指南:快速构建智能电网应用的完整教程

IEC 61850开源库终极指南&#xff1a;快速构建智能电网应用的完整教程 【免费下载链接】libiec61850 Official repository for libIEC61850, the open-source library for the IEC 61850 protocols 项目地址: https://gitcode.com/gh_mirrors/li/libiec61850 想要快速掌…

作者头像 李华
网站建设 2026/11/3 5:55:08

雀魂牌谱屋:用数据解锁麻将进阶之路

雀魂牌谱屋&#xff1a;用数据解锁麻将进阶之路 【免费下载链接】amae-koromo 雀魂牌谱屋 (See also: https://github.com/SAPikachu/amae-koromo-scripts ) 项目地址: https://gitcode.com/gh_mirrors/am/amae-koromo 还在为雀魂麻将的技术瓶颈而困扰吗&#xff1f;雀魂…

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

FlashInfer:突破LLM推理性能瓶颈的GPU内核革命

FlashInfer&#xff1a;突破LLM推理性能瓶颈的GPU内核革命 【免费下载链接】flashinfer FlashInfer: Kernel Library for LLM Serving 项目地址: https://gitcode.com/gh_mirrors/fl/flashinfer 当大型语言模型从实验室走向生产环境时&#xff0c;推理性能成为制约其广泛…

作者头像 李华
网站建设 2026/11/4 21:18:44

Transformer在TTS中的应用:IndexTTS 2.0架构深层解读

Transformer在TTS中的应用&#xff1a;IndexTTS 2.0架构深层解读 当一段5秒的语音就能“复制”出一个声音演员&#xff0c;而你还能让这个声音以愤怒的语气朗读温柔的情诗——这不再是科幻电影的情节&#xff0c;而是IndexTTS 2.0已经实现的技术现实。作为B站开源的自回归零样本…

作者头像 李华