In diesem Codeausschnitt (char c = 'a'; const char * p1 = & c; char * const p2 = & c;) ist der Unterschied zwischen dem, was p1 und p2 tun, und der Funktion des Sterns (*) in beiden Fällen?
Antwort 1:
const char * bedeutet, dass der angegebene Wert nicht geändert werden kann.
char * const bedeutet, dass der Zeiger selbst nicht geändert werden kann.
Es gibt eine dritte Variante
const char * const Weder der Wert noch der Zeiger können geändert werden.
#includeint main (nichtig) { char a = 'a'; char b = 'b'; const char * p1 = & a; char * const p2 = & a; const char * const p3 = & a; printf ("a '% c' \ n", a); printf ("p1% 08X '% c' \ n", p1, * p1); printf ("p2% 08X '% c' \ n", p2, * p2); printf ("p3% 08X '% c' \ n", p3, * p3); // * p1 = '1'; // Error * p2 = '2'; // * p3 = '3'; // Fehler p1 = & b; // pb = & b; // Error // pc = & b; // Error printf ("a '% c' \ n", a); printf ("p1% 08X '% c' \ n", p1, * p1); printf ("p2% 08X '% c' \ n", p2, * p2); printf ("p3% 08X '% c' \ n", p3, * p3); }
Veröffentlicht am 25-12-2019