const char* names\[\] = {"Alice", "Bob", "Charlie"};
const char* names\[\]
^^^^^ 变量名
^^^^^^ 先看右边:\[\] → names 是数组
^^^^^^ 再看左边:const char* → 数组元素是「指向 const char 的指针」
至于const到底修饰什么,他修饰的数组的每个成员,就是每个指针的解引用*names1,只有这个不可修改,也就是"Alice"不可修改,导致names00也不可修改,而names1=names0是可以的,因为他是对地址赋值,而不是解引用
| 表达式 | 类型 | 能否修改 | 说明 |
|---|---|---|---|
names |
const char*[3] |
❌ 不能整体赋值 | 数组名不能重新绑定 |
names[0] |
const char* |
✅ 可以 | 指针本身可改,指向别的字符串 |
*names[0] |
const char |
❌ 不能 | 指向的字符是 const |
names[0][0] |
const char |
❌ 不能 | 同上 |