Использование (char **) против (const * char *) против (const char **) - PullRequest
1 голос
/ 29 сентября 2019

Я пытаюсь обернуть голову вокруг различных определителей для массива указателей или указателя на указатель.В чем будет разница между следующими тремя декларациями (последнее из которых я считаю неправильным, но я не уверен, почему):

char ** strings;

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

const char ** strings;

Когда одно из них будет использоваться поверх другого?И почему третий (я думаю?) Вообще не имеет смысла?

1 Ответ

2 голосов
/ 29 сентября 2019

Спецификатор const помечает объект как неизменяемый, то есть «только для чтения», но вы наверняка знали, что.


char ** strings;

strings - это изменяемый указатель наизменяемый указатель на изменяемый символ.Ни один из них не является const очевидно.


const * char * strings;

синтаксически неверен.


char * const * strings;

strings является изменяемым указателем на неизменяемый указатель наизменяемый символ.


const char ** strings;

strings - это изменяемый указатель на изменяемый указатель на неизменяемый символ.

Это имеет смысл, если вам нужна такая переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...