Der Adressoperator (&)
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 3 von 63.
Nachdem Sie nun Pointer deklarieren können, müssen Sie lernen, wie Sie tatsächlich eine Speicheradresse in ihnen speichern. Der Adressoperator (&) ist der Schlüssel, um die Speicheradresse einer beliebigen Variablen zu erhalten.
Wenn Sie den &-Operator vor einen Variablennamen setzen, gibt er die Speicheradresse zurück, an der diese Variable gespeichert ist. Stellen Sie es sich wie die Frage vor: „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 age-Variable. Wir weisen diese Adresse dann unserem Pointer ptr zu. Jetzt "zeigt" ptr auf die age-Variable.
Der Adressoperator ist essenziell, da er die Brücke zwischen regulären Variablen und Pointern bildet. Ohne ihn könnten Sie einem Pointer nicht mitteilen, auf welche Variable er zeigen soll. Denken Sie daran, dass die Datentypen übereinstimmen müssen – Sie können die Adresse eines Integers nur einem Pointer zuweisen, der für Integer deklariert wurde.
Aufgabe
EinfachSchreiben Sie ein C-Programm, das die Verwendung des Adressoperators demonstriert, um Variablen mit Pointern zu verknüpfen. Ihr Programm sollte:
- Deklarieren Sie eine Integer-Variable namens
numberund initialisieren Sie diese mit dem Wert 42 - Deklarieren Sie eine Character-Variable namens
letterund initialisieren Sie diese mit dem Wert 'X' - Deklarieren Sie einen Pointer auf einen Integer namens
num_ptr - Deklarieren Sie einen Pointer auf einen Character namens
char_ptr - Verwenden Sie den Adressoperator, um die Adresse von
numberannum_ptrzuzuweisen - Verwenden Sie den Adressoperator, um die Adresse von
letteranchar_ptrzuzuweisen - Geben Sie die in beiden Pointern gespeicherten Adressen mit
printfund dem Formatbezeichner%paus
Ihre Ausgabe sollte die Pointer-Adressen im folgenden Format anzeigen:
Address of number: [address]
Address of letter: [address]Die tatsächlichen Speicheradressen variieren zwischen den Programmdurchläufen, aber das Format und die Beschriftungen müssen exakt wie oben gezeigt übereinstimmen.
Spickzettel
Der Adressoperator (&) gibt die Speicheradresse einer Variablen zurück:
int age = 25;
int *ptr;
ptr = &age; // Speichere die Adresse von 'age' in 'ptr'Der Adressoperator ist essenziell, um Variablen mit Pointern zu verknüpfen. Datentypen müssen übereinstimmen – man kann die Adresse eines Integers nur einem Pointer zuweisen, der für Integer deklariert wurde.
Verwenden Sie den Formatspezifizierer %p, um Pointer-Adressen mit printf auszugeben.
Probier es selbst
#include <stdio.h>
int main() {
// TODO: Schreiben Sie Ihren Code hier
// 1. Deklarieren und initialisieren Sie die Variablen
// 2. Deklarieren Sie die Pointer
// 3. Verwenden Sie den Adressoperator, um Adressen zuzuweisen
// 4. Geben Sie 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 Logic & Flow
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