单片机/C/C++八股:(二十)指针常量和常量指针

上一篇 下一篇
栈和堆的区别?

单独说 指针常量和常量指针

const 关键字修饰指针变量,就可以得到指针常量和常量指针

const 与指针结合时,位置决定含义。记住口诀:

  • const* 左边是指针常量,内容不能改,但指针可以改;
  • const* 右边是常量指针,指针不能改,但内容可以改;
  • * 两边都有 const,内容和指针都不能改。
声明 含义 能否修改指针? 能否修改指向的内容?
const int *pint const *p 指针常量(指向常量的指针) ✔️ 可以(p = &x; ❌ 不可以(*p = 10; 错误)
int *const p = &x; 常量指针 ❌ 不可以 ✔️ 可以(*p = 10;
const int *const p = &x; 指向常量的常量指针 ❌ 不可以 ❌ 不可以

应用示例:

c 复制代码
const char *str = "Hello";     // 推荐写法:字符串字面量是只读的
// str[0] = 'h';               // × 运行时可能崩溃(写只读内存)
str = "World";                 // √ 指针可变

char buffer[10];
char *const ptr = buffer;      // 指针固定指向 buffer
ptr[0] = 'A';                  // √ 内容可变
// ptr = another_buffer;       // × 指针不可变

相关推荐
爱编码的小八嘎2 小时前
C语言完美演绎4-8
c语言
兑生2 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
炸膛坦客3 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲3 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
Jay_Franklin4 小时前
Quarto与Python集成使用
开发语言·python·markdown
2401_831824964 小时前
代码性能剖析工具
开发语言·c++·算法
是wzoi的一名用户啊~4 小时前
【C++小游戏】2048
开发语言·c++
weixin_426689205 小时前
vscode C语言编译环境搭建(单个文件)
c语言·ide·vscode
Sunshine for you5 小时前
C++中的职责链模式实战
开发语言·c++·算法