Zeiger deklarieren
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 2 von 63.
Nachdem Sie nun verstanden haben, was Pointers sind, lernen wir, wie man sie erstellt. Das Deklarieren einer Pointer-Variable folgt einer spezifischen Syntax, die dem Compiler mitteilt, auf welchen Datentyp der Pointer zeigen wird.
Die grundlegende Syntax zum Deklarieren eines Pointers 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 einen `integer` namens
int_ptrdeklarieren, initialisiert mitNULL - Einen Zeiger auf einen `character` namens
char_ptrdeklarieren, initialisiert mitNULL - Einen Zeiger auf einen `float` namens
float_ptrdeklarieren, initialisiert mitNULL - Die in jedem Zeiger gespeicherten Speicheradressen unter Verwendung von
printfmit dem Formatbezeichner%pausgeben. Casten Sie den Zeiger beim Drucken nach(void*), um die korrekte Formatierung zu gewährleisten, zum Beispiel:printf("Label: %p\n", (void*)ptr);
Ihre Ausgabe sollte die drei Zeigeradressen im folgenden Format anzeigen:
Integer pointer: [address]
Character pointer: [address]
Float pointer: [address]Beachten Sie, dass die tatsächlichen Speicheradressen variieren, aber das Format und die Beschriftungen 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 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