366 Stimmen

Was ist der Unterschied zwischen char * const und const char *?

Was ist der Unterschied zwischen:

char * const 

und

const char *

23voto

Adam Rosenfield Punkte 373807

const * char ist ungültiger C-Code und hat keine Bedeutung. Vielleicht wollten Sie nach dem Unterschied zwischen einer const char * und eine char const * oder möglicherweise der Unterschied zwischen einer const char * und eine char * const ?

Siehe auch:

12voto

AAnkit Punkte 26738
  1. const char* x Hier ist X im Grunde ein Zeichenzeiger, der auf einen konstanten Wert verweist

  2. char* const x bezieht sich auf einen Zeichenzeiger, der konstant ist, aber die Position, auf die er zeigt, kann geändert werden.

  3. const char* const x eine Kombination aus 1 und 2 ist, bedeutet dies, dass es sich um einen konstanten Zeichenzeiger handelt, der auf einen konstanten Wert verweist.

  4. const *char x führt zu einem Compilerfehler, da es nicht deklariert werden kann.

  5. char const * x ist gleich Punkt 1.

gilt die Faustregel, dass const mit var name ist, wird die der Zeiger bleibt konstant, aber die Position des Zeigers kann geändert werden sonst der Zeiger zeigt auf eine konstante Stelle und der Zeiger kann auf eine andere Stelle zeigen, aber der Inhalt des Zeigers kann nicht geändert werden .

7voto

Aadishri Punkte 1231

Eine weitere Faustregel ist, zu prüfen, wo Konst ist :

  1. vorher * \=> Wert gespeichert ist Konstante
  2. nach * \=> Zeiger selbst ist Konstante

4voto

Javier Punkte 4452

Der erste ist ein Syntaxfehler. Vielleicht meinten Sie den Unterschied zwischen

const char * mychar

und

char * const mychar

In diesem Fall ist der erste ein Zeiger auf Daten, die sich nicht ändern können, und der zweite ist ein Zeiger, der immer auf dieselbe Adresse verweisen wird.

4voto

Viele Antworten bieten spezifische Techniken, Daumenregeln usw., um diesen besonderen Fall der Variablendeklaration zu verstehen. Aber es gibt eine allgemeine Technik, um jede Deklaration zu verstehen:

Uhrzeiger/Spiralregel

A)

const char *a;

Gemäß der Uhrzeiger-/Spiralregel a ist ein Zeiger auf ein Zeichen, das konstant ist. Das heißt, das Zeichen ist konstant, aber der Zeiger kann sich ändern, z.B. a = "other string"; ist in Ordnung, aber a[2] = 'c'; wird nicht kompiliert

B)

char * const a;

Wie in der Vorschrift vorgesehen, a ist ein Konstantenzeiger auf ein Zeichen, d.h. Sie können a[2] = 'c'; aber Sie können nicht tun a = "other string";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X