Referenzen und Dereferenzierungen
Pointer basieren auf zwei Operatoren:
- Dem Adressoperator
&. - Dem Dereferenzierungsoperator
*.
Adressoperator
Der Adressoperator, dargestellt durch &, ermöglicht den direkten Zugriff auf den Arbeitsspeicher des Computers. Mit & kann die tatsächliche Speicheradresse eines Objekts ermittelt werden.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Der Formatbezeichner zur Ausgabe von Adressen (Zeigern) ist %p.
Adressen werden typischerweise in hexadezimaler Schreibweise dargestellt.
Dereferenzierungsoperator
Der *-Operator liefert im Gegensatz dazu den Namen des Bewohners, wenn die Adresse bekannt ist. Wie kann dieser Operator verwendet werden, wenn nicht direkt mit Adressen gearbeitet wird? Bei einem Ausdruck wie &x, der die Adresse der Variablen x zurückgibt, liefert die Anwendung des *-Operators darauf (*&x) den Wert der an dieser Adresse gespeicherten Variablen.
Im Wesentlichen ist *&x dasselbe wie x.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Verwechseln Sie nicht den Dereferenzierungsoperator (*x) mit dem Multiplikationsoperator (x*y).
Swipe to start coding
- Erstellen eines Integer-Arrays mit 5 Elementen und Befüllen mit Werten.
- Abrufen der Adresse des dritten Elements.
- Inkrementieren der Adresse des dritten Elements und Dereferenzieren der inkrementierten Adresse, um den Wert auszugeben, auf den sie zeigt.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain the difference between the address-of and dereference operators with an example?
Why are memory addresses usually shown in hexadecimal?
Can you show how to use these operators in a simple code snippet?
Awesome!
Completion rate improved to 2.63
Referenzen und Dereferenzierungen
Swipe um das Menü anzuzeigen
Pointer basieren auf zwei Operatoren:
- Dem Adressoperator
&. - Dem Dereferenzierungsoperator
*.
Adressoperator
Der Adressoperator, dargestellt durch &, ermöglicht den direkten Zugriff auf den Arbeitsspeicher des Computers. Mit & kann die tatsächliche Speicheradresse eines Objekts ermittelt werden.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Der Formatbezeichner zur Ausgabe von Adressen (Zeigern) ist %p.
Adressen werden typischerweise in hexadezimaler Schreibweise dargestellt.
Dereferenzierungsoperator
Der *-Operator liefert im Gegensatz dazu den Namen des Bewohners, wenn die Adresse bekannt ist. Wie kann dieser Operator verwendet werden, wenn nicht direkt mit Adressen gearbeitet wird? Bei einem Ausdruck wie &x, der die Adresse der Variablen x zurückgibt, liefert die Anwendung des *-Operators darauf (*&x) den Wert der an dieser Adresse gespeicherten Variablen.
Im Wesentlichen ist *&x dasselbe wie x.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Verwechseln Sie nicht den Dereferenzierungsoperator (*x) mit dem Multiplikationsoperator (x*y).
Swipe to start coding
- Erstellen eines Integer-Arrays mit 5 Elementen und Befüllen mit Werten.
- Abrufen der Adresse des dritten Elements.
- Inkrementieren der Adresse des dritten Elements und Dereferenzieren der inkrementierten Adresse, um den Wert auszugeben, auf den sie zeigt.
Lösung
Danke für Ihr Feedback!
single