Der Adressoperator (&)
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 3 von 63.
Nachdem du nun Zeiger deklarieren kannst, musst du lernen, wie du tatsächlich eine Speicheradresse in ihnen speicherst. Der Adressoperator (&) ist der Schlüssel, um die Speicheradresse jeder Variablen zu erhalten.
Wenn du den Operator & vor einen Variablennamen setzt, gibt er die Speicheradresse zurück, unter der diese Variable gespeichert ist. Stell dir vor, du fragst: „Wo befindet sich diese Variable im Speicher?“
int age = 25;
int *ptr;
ptr = &age; // Speichere die Adresse von 'age' in 'ptr'In diesem Beispiel gibt uns &age die Speicheradresse der Variablen age. Anschließend weisen wir diese Adresse unserem Zeiger ptr zu. Jetzt „zeigt“ ptr auf die Variable age.
Der Adressoperator ist unverzichtbar, weil er die Verbindung zwischen gewöhnlichen Variablen und Zeigern herstellt. Ohne ihn könntest du einem Zeiger nicht mitteilen, auf welche Variable er zeigen soll. Denke daran, dass die Datentypen übereinstimmen müssen – du kannst die Adresse einer Ganzzahl nur einem Zeiger zuweisen, der für Ganzzahlen deklariert ist.
Aufgabe
EinfachSchreibe ein C-Programm, das die Verwendung des Adressoperators demonstriert, um Variablen mit Zeigern zu verbinden. Dein Programm sollte:
- Eine Ganzzahlvariable namens
numberdeklarieren und mit dem Wert 42 initialisieren - Eine Zeichenvariable namens
letterdeklarieren und mit dem Wert 'X' initialisieren - Einen Zeiger auf eine Ganzzahl namens
num_ptrdeklarieren - Einen Zeiger auf ein Zeichen namens
char_ptrdeklarieren - Den Adressoperator verwenden, um die Adresse von
numbernum_ptrzuzuweisen - Den Adressoperator verwenden, um die Adresse von
letterchar_ptrzuzuweisen - Die in beiden Zeigern gespeicherten Adressen mit
printfund dem Formatspezifizierer%pausgeben
Deine Ausgabe sollte die Zeigeradressen im folgenden Format anzeigen:
Address of number: [address]
Address of letter: [address]Die tatsächlichen Speicheradressen können zwischen den Programmausführungen variieren, aber das Format und die Bezeichnungen müssen genau wie oben gezeigt übereinstimmen. [address] ist ein Platzhalter für die ausgegebene Adresse: Gib die eckigen Klammern nicht aus.
Probier es selbst
#include <stdio.h>
int main() {
// TODO: Schreibe deinen Code hier
// 1. Deklariere und initialisiere die Variablen
// 2. Deklariere die Zeiger
// 3. Verwende den Adressoperator, um Adressen zuzuweisen
// 4. Gib die Adressen im gezeigten Format aus
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-FunktionenÜbe selbstständig: Online-C-Compiler