单片机/C/C++八股:(二十)指针常量和常量指针
| 上一篇 | 下一篇 |
|---|---|
| 栈和堆的区别? |
单独说 指针常量和常量指针
const 关键字修饰指针变量,就可以得到指针常量和常量指针
const与指针结合时,位置决定含义。记住口诀:
const在*左边是指针常量,内容不能改,但指针可以改;const在*右边是常量指针,指针不能改,但内容可以改;*两边都有const,内容和指针都不能改。
| 声明 | 含义 | 能否修改指针? | 能否修改指向的内容? |
|---|---|---|---|
const int *p或int const *p | 指针常量(指向常量的指针) | ✔️ 可以(p = &x;) | ❌ 不可以(*p = 10;错误) |
int *const p = &x; | 常量指针 | ❌ 不可以 | ✔️ 可以(*p = 10;) |
const int *const p = &x; | 指向常量的常量指针 | ❌ 不可以 | ❌ 不可以 |
应用示例:
constchar*str="Hello";// 推荐写法:字符串字面量是只读的// str[0] = 'h'; // × 运行时可能崩溃(写只读内存)str="World";// √ 指针可变charbuffer[10];char*constptr=buffer;// 指针固定指向 bufferptr[0]='A';// √ 内容可变// ptr = another_buffer; // × 指针不可变