Bitte fügen Sie der Erklärung ein Beispiel bei.
Antwort
Zu viele Anzeigen?Ich denke, dass alle vorherigen Antworten falsch sind, da sie besagen, dass Dereferenzierung den Zugriff auf den tatsächlichen Wert bedeutet. Wikipedia gibt stattdessen die richtige Definition an: https://en.wikipedia.org/wiki/Dereference_operator
Sie arbeitet mit einer Zeigervariablen und gibt einen l-Wert zurück, der dem Wert an der Zeigeradresse entspricht. Dies wird als "Dereferenzierung" des Zeigers bezeichnet.
Das heißt, wir können den Zeiger dereferenzieren, ohne jemals auf den Wert zuzugreifen, auf den er zeigt. Zum Beispiel:
char *p = NULL;
*p;
Wir haben den NULL-Zeiger dereferenziert, ohne auf seine Wert. Oder wir könnten es tun:
p1 = &(*p);
sz = sizeof(*p);
Wiederum Dereferenzierung, aber kein Zugriff auf den Wert. Ein solcher Code wird NICHT abstürzen: Der Absturz erfolgt, wenn Sie tatsächlich Zugang die Daten durch eine ungültigen Zeiger. Leider ist jedoch nach dem Standard ist die Dereferenzierung eines ungültigen Zeigers ein undefiniertes Verhalten (mit ein paar Ausnahmen), auch wenn Sie nicht versuchen die eigentlichen Daten zu berühren.
Kurz gesagt: Die Dereferenzierung des Zeigers bedeutet die Anwendung des Dereferenzierungsoperator auf ihn anzuwenden. Dieser Operator gibt einfach einen l-Wert für Ihre zukünftige Verwendung zurück.
- See previous answers
- Weitere Antworten anzeigen
0 Stimmen
Das kann Ihnen helfen: stackoverflow.com/questions/2795575/
26 Stimmen
cslibrary.stanford.edu/106
33 Stimmen
int *p;
würde einen Zeiger auf eine Ganzzahl definieren, und*p
würde diesen Zeiger dereferenzieren, d. h. er würde die Daten, auf die p zeigt, tatsächlich abrufen.5 Stimmen
Binky's Pointer Fun ( cslibrary.stanford.edu/104 ) ist ein großartiges Video über Zeiger, das die Dinge klären könnte. @Erik- Toll, dass du den Link zur Stanford CS Library gesetzt hast. Es gibt dort so viele Leckerbissen...
7 Stimmen
Die Antwort von Harry ist hier das Gegenteil von hilfreich.
1 Stimmen
@Peyman
*p
ruft die Daten, auf die p zeigt, nicht ab. Stattdessen bezeichnet er den Speicherort. Dieser Ausdruck kann dann weiter verwendet werden, um entweder neue Daten zu speichern oder Daten abzurufen oder gar nichts.0 Stimmen
Ein passendes Beispiel kam mir gerade in den Sinn, wenn man etwas aus dem Computerspeicher löscht oder man kann sagen, von der Festplatte... eigentlich löscht man nichts, sondern dereferenziert nur den Zeiger, der auf die Adresse der Datei im Speicher zeigt.