const in Bezeichnern.
-
Hallo,
was ist der Unterschied zwischen folgenden Deklarationen:const char* str;
char* const str;
const char* const str;const char* foo();
char* const foo();
const char* const foo();Bitte um Erklärung der Unterschiede.
-
ich machs mit int, das ist ein wenig eindeutiger
int z = 5; int y = 9; const int* a = &z; // a zeigt auf die Speicheradresse von z *a = 4; // geht nicht, würde z verändern a = &y; // geht, a zeigt jetzt auf die Speicheradresse von y int* const a = &z; *a = 4; // geht, z ist jetzt 4 a = &y; // geht nicht const int* const a = &z; *a = 4; // geht nicht a = &y; // geht nicht const char* foo(); // der Rückgabewert kann nicht verändert werden char* const foo(); // macht meines Erachtens keinen Sinn, weiß aber nicht, wie das in C ist const char* const foo(); // wieder ne Kombination aus den anderen beiden
Grob gilt: Steht das const vor dem *, ist das Objekt, auf das der Zeiger zeigt nicht über diesen Zeiger veränderbar.
Steht das const hinter dem *, kann der Zeiger nicht verändert werden, dafür aber das Objekt, auf das er zeigtSiehe auch dieser Thread, wo vor wenigen Tagen die gleiche Frage aufkam
-
Ah, ok. Das ist mir jetzt um einiges klarer. Danke!