Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Referenzen und Dereferenzierungen | Zeiger
C-Grundlagen

bookReferenzen 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

Main.c

copy
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; }
Note
Hinweis

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.

Note
Hinweis

Im Wesentlichen ist *&x dasselbe wie x.

Main.c

Main.c

copy
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; }
Note
Hinweis

Verwechseln Sie nicht den Dereferenzierungsoperator (*x) mit dem Multiplikationsoperator (x*y).

Aufgabe

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

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 6. Kapitel 2
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 2.63

bookReferenzen 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

Main.c

copy
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; }
Note
Hinweis

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.

Note
Hinweis

Im Wesentlichen ist *&x dasselbe wie x.

Main.c

Main.c

copy
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; }
Note
Hinweis

Verwechseln Sie nicht den Dereferenzierungsoperator (*x) mit dem Multiplikationsoperator (x*y).

Aufgabe

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

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 6. Kapitel 2
single

single

some-alt