2016-07-31 3 views
0

Я работал над фрагментом кода, когда я заметил это синтаксически, невозможно выделить постоянный указатель, указывающий на тип char, из указателя, указывающего на константный тип char, по крайней мере, до моего сведения. В любом случае, я пытаюсь это сделать, я просто закончил с этим: const char * foo;.Является ли константный указатель char указателем, указывающим на постоянный символ или указатель константы, указывающий на символ?

Также, если есть способ различать два, пожалуйста, дайте мне знать в вашем ответе или комментариях ниже.

спасибо.

+1

'Const символ * Foo' является указателем на' сопзЬ char' (символ он указывает, что нельзя изменить). 'char * const foo' является константным указателем на' char', поэтому вы можете изменить символ, но не значение указателя. – mch

+0

Помогает ли http://stackoverflow.com/q/22332677/2564301? (Если не фактический дубликат.) – usr2564301

+0

@mch Спасибо. –

ответ

2
const char * foo; 

foo является указателем на постоянный символ. Это означает, что вы не можете изменить содержимое объекта, на которое указывает указатель.

char * const foo; 

foo является постоянным указателем на символ. Вы можете изменить содержимое объекта, на которое указывает указатель, но вы не можете назначить другой объект указателю.

This должен быть полезен для вас.

2

Легче вспомнить, где const квалификация применяется, если вы поместите его после типа, к которому он относится

char const* a;  // mutable pointer to unmutable char 
char*const b;  // unmutable pointer to mutable char 
char const*const c; // both unmutable 
char* c;   // both mutable 
Смежные вопросы