Zeiger deklarieren
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 2 von 63.
Da du nun verstanden hast, was Zeiger sind, wollen wir lernen, wie man sie erstellt. Die Deklaration einer Zeigervariable folgt einer bestimmten Syntax, die dem Compiler mitteilt, auf welchen Datentyp der Zeiger zeigen wird.
Die grundlegende Syntax zum Deklarieren eines Zeigers lautet: data_type *pointer_name;
int *ptr; // Deklariert einen Zeiger auf eine Ganzzahl
char *ch_ptr; // Deklariert einen Zeiger auf ein Zeichen
float *f_ptr; // Deklariert einen Zeiger auf eine GleitkommazahlDer Stern (*) macht dies zu einer Pointer-Deklaration. Er teilt dem Compiler mit, dass diese Variable eine Speicheradresse speichern wird und nicht den eigentlichen Datenwert. Wenn Sie int *ptr; deklarieren, sagen Sie damit: „ptr ist ein Pointer, der die Adresse einer Integer-Variablen speichern kann.“
Es ist eine gute Praxis, Pointee mit NULL zu initialisieren, wenn sie noch nicht auf eine gültige Speicheradresse zeigen. Dies verhindert, dass sie auf zufällige Speicherorte zeigen: int *ptr = NULL;
Beim Drucken von Pointer-Adressen unter Verwendung von printf verwenden Sie den Formatbezeichner %p. Es wird oft empfohlen, den Pointer nach (void *) zu casten, um Kompatibilität und korrekte Formatierung zu gewährleisten: printf("%p", (void *)ptr);
Beachten Sie, dass der Datentyp vor dem Sternchen angibt, auf welche Art von Daten der pointer zeigen wird. Dies ist wichtig, da verschiedene Datentypen unterschiedlich viel Speicherplatz belegen und der Compiler diese Informationen für eine ordnungsgemäße Speicherverwaltung benötigt.
Aufgabe
Einfach- Einen Zeiger auf eine Ganzzahl namens
int_ptrdeklarieren, initialisiert mitNULL - Einen Zeiger auf ein Zeichen namens
char_ptrdeklarieren, initialisiert mitNULL - Einen Zeiger auf eine Gleitkommazahl namens
float_ptrdeklarieren, initialisiert mitNULL - Die in jedem Zeiger gespeicherten Speicheradressen mit
printfund dem Formatspezifizierer%pausgeben. Wandle den Zeiger bei der Ausgabe in(void*)um, um die korrekte Formatierung sicherzustellen, zum Beispiel:printf("Label: %p\n", (void*)ptr);
Deine Ausgabe sollte die drei Zeigeradressen im folgenden Format anzeigen:
Integer pointer: [address]
Character pointer: [address]
Float pointer: [address]Beachte, dass die tatsächlichen Speicheradressen variieren werden, das Format und die Bezeichnungen jedoch genau wie oben gezeigt übereinstimmen müssen.
Probier es selbst
#include <stdio.h>
int main() {
// TODO: Deklariere deine Zeiger hier
// TODO: Gib die Zeigeradressen im erforderlichen 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