Const Pointer
-
Wie merkt ihr euch, ob der Poniter const ist oder die Variable, gibts da ne Merkhilfe?
const int *variable; int* const variable;
-
Ja, gucken welcher Typ links vom Sternchen steht.
-
So wie der Compiler: Einfach von Rechts nach Links lesen:
int const * const a; /// Konstanter Pointer auf konstantes int. const * const int int const * a; /// Pointer auf konstantes int. * const int
-
Es gibt ja quasi 3 Positionen für das
const:const int * //konstanter Zeiger int const * //Zeiger auf konstantes int int *const //konstanter ZeigerDie zweite Position musst du immer machen, für sie gibt es keine Alternative. Aber wenn du dich zwischen erster und dritter entscheiden musst, nimm besser die dritte und merk dir: links vom
conststeht das, wasconstist.
Abgesehen davon passieren dir dann solche Missgeschicke hoffentlich nicht:int *const a(nullptr), *b(nullptr); //b ist jetzt kein konstanter Zeiger int *const c(nullptr), *const d(nullptr); //jetzt sind es beide
-
Huch? Variante 1 und 2 sind doch dasselbe, was erzählst Du da.
Es geht darum, auf welcher Seite vom * das const steht!
const int* ptr; // Zeiger auf ein int (, das konstant ist) int const* ptr; // Zeiger auf ein konstantes int (= dasselbe) int* const ptr; // konstanter Zeiger auf ein intEinfach von rechts nach links lesen, * dabei als Zeiger aussprechen und dann macht man es richtig.
-
Man kann es auch von Links nach Rechts lesen, man muss es dann nur einfach anders lesen.
int const *ist dann ein Integer-Konstanten-Zeiger und
int * constist eine Integer-Zeiger-Konstante.
-
Der Tobi schrieb:
const int * //konstanter ZeigerMan sollte schon meinen Beitrag lesen bevor man antwortet.

-
hustbaer:
Und wenn sich der geneigte Leser beides behält, vertauscht er es im richtigen Moment mit Sicherheit.