我试图将我的头缠在指针数组或指向指针的指针的不同限定符周围。以下三个声明(我认为最后一个声明是错误的,但是我不确定为什么)之间有什么区别:
char ** strings;
const * char * strings / char * const * strings (?);
const char ** strings;
什么时候可以使用另一个?为什么第三个(我认为呢?)根本没有意义?
答案 0 :(得分:1)
const
限定符将一个对象标记为不可变,即“只读”,但是您很可能知道这一点。
char ** strings;
strings
是指向可变字符的可变指针的可变指针。他们显然都不是const
。
const * char * strings;
在语法上是错误的。
char * const * strings;
strings
是指向可变字符的不可变指针的可变指针。
const char ** strings;
strings
是指向可变字符的可变指针。
如果您需要这样的变量,这很有意义。