2016-07-31 9 views
0

Ich arbeitete an einem Stück Code, als ich bemerkte, dass es syntaktisch nicht möglich ist, einen konstanten Zeiger, der auf einen char-Typ zeigt, von einem Zeiger zu unterscheiden, der auf einen konstanten char-Typ verweist, zumindest nicht meines Wissens. So oder so versuche ich es zu sagen, ich komme einfach mit diesem: const char * foo;.Ist ein konstanter Char-Zeiger ein Zeiger, der auf ein konstantes Zeichen oder einen konstanten Zeiger zeigt, der auf ein Zeichen zeigt?

Auch wenn es eine Möglichkeit gibt, zwischen den beiden zu unterscheiden, lassen Sie es mich bitte in Ihrer Antwort oder den Kommentaren unten wissen.

Vielen Dank.

+1

'const char * foo' zu einem' const char' ist ein Zeiger gilt (das Zeichen es zeigt auf kann nicht geändert werden). 'char * const foo' ist ein const-Zeiger auf ein' char', so dass Sie das Zeichen, aber nicht den Wert des Zeigers ändern können. – mch

+0

Hilft http://stackoverflow.com/q/22332677/2564301? (Wenn nicht ein sachliches Duplikat.) – usr2564301

+0

@mch Danke. –

Antwort

2
const char * foo; 

über foo ist ein Zeiger auf konstante char. Das bedeutet, dass Sie den Inhalt des Objekts, auf den der Zeiger zeigt, nicht ändern können.

über foo ist ein konstanter Zeiger auf char. Das bedeutet, dass Sie den Objektinhalt ändern können, auf den der Zeiger zeigt, aber Sie können dem Zeiger kein anderes Objekt zuweisen.

This sollte Ihnen nützlich sein, zu lesen.

2

Es ist einfacher, sich daran zu erinnern, wo const Qualifikation gilt, wenn Sie es nach die Art setzen, auf die sie

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 
Verwandte Themen