V tomto fragmentu kódu (char c = 'a'; const char * p1 = & c; char * const p2 = & c;) jaký je rozdíl mezi tím, co p1 a p2 dělá, a jakou funkcí hvězdy (*) v obou případech?


Odpověď 1:

const char * znamená hodnotu, na kterou se odkazuje, nelze změnit.

char * const znamená, že ukazatel nelze změnit.

Existuje třetí varianta

const char * const nelze změnit hodnotu ani ukazatel.

#include 

int main (neplatné)
{
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'; // chyba
* p2 = '2';
// * p3 = '3'; // chyba

p1 = & b;
// pb = & b; // chyba
// pc = & b; // chyba

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