Unterschied zwischen *(ptr) = var_2; und ptr = &var_2;
-
Hallo,
wo ist der Unterschied zwischen:
*(ptr) = var_2;
und
ptr = &var_2;int var = 3; int var_2 = 1; int *ptr = &var; *(ptr) = var_2; ptr = &var_2; cout<< * ptr;
-
int var = 3; int var_2 = 1; int *ptr = &var; // ptr zeigt auf var *(ptr) = var_2; // der Speicher auf den prt zeigt (var) wird auf var_2 (1) gesetzt ptr = &var_2; // ptr zeight nun auf var_2 . änderst du nun var und gibst ptr aus bleibt der unverändert cout<< * ptr;
-
Nach
int var = 3; int var_2 = 1; int *ptr = &var;gilt:
Variablen: var var_2 ptr Adressen: &var &var_2 &ptr Speicherinhalt: 3 1 &varNach
*(ptr) = var_2;gilt:
Variablen: var var_2 ptr Adressen: &var &var_2 &ptr Speicherinhalt: 1 <----- 1 &varptr enthält den Wert &var. *ptr bezieht sich damit auf die Speicherstelle, in der var gespeichert ist. Der Wert der rechten Seite ist das, was in var_2 drin steht, also 1. Wir schreiben also eine 1 in var über den Zeiger ptr rein.
Nach
ptr = &var_2; cout<< * ptr;gilt:
Variablen: var var_2 ptr Adressen: &var &var_2 &ptr Speicherinhalt: 1 1 &var_2und der Wert von var_2 wird ausgegeben, da sich *ptr auf die Speicherstelle von var_2 bezieht.
-
Die Erklärung von padreigh habe ich verstanden. ^^
Die von dir krümelkacker nicht. ^^Aber egal ich weiss ja jetzt wie es funktioniert.
-
zeiger schrieb:
Die Erklärung von padreigh habe ich verstanden. ^^
Die von dir krümelkacker nicht. ^^Jede Variable sitzt irgendwo im Arbeitspeicher. Die einzelnen Bytes im Arbeitsspeicher können adressiert werden. Jede Variable x hat also eine Adresse &x, wobei & der Adress-Operator ist. Und jede Variable speichert einen Wert. Ganzzahl-Variablen speichern Ganzzahlen, Fließkomma-Variablen speichern Annäherungen von Realzahlen und Zeiger-Variablen speichern Adressen.
Die Tabellen sollten zeigen, wann welche Variable was speichert.