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.

#include 

int 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);
}