使用(char **)vs.(const * char *)vs.(const char **)

时间:2019-09-29 00:25:27

标签: c

我试图将我的头缠在指针数组或指向指针的指针的不同限定符周围。以下三个声明(我认为最后一个声明是错误的,但是我不确定为什么)之间有什么区别:

char ** strings;

const * char * strings / char * const * strings (?);

const char ** strings;

什么时候可以使用另一个?为什么第三个(我认为呢?)根本没有意义?

1 个答案:

答案 0 :(得分:1)

const限定符将一个对象标记为不可变,即“只读”,但是您很可能知道这一点。


char ** strings;

strings是指向可变字符的可变指针的可变指针。他们显然都不是const


const * char * strings;

在语法上是错误的。


char * const * strings;

strings是指向可变字符的不可变指针的可变指针。


const char ** strings;

strings是指向可变字符的可变指针。

如果您需要这样的变量,这很有意义。