einen Hund vorstellen.
Jetzt stellen Sie sich eine Hundeleine vor.
Stellen Sie sich nun den Hund vor, der an der Leine befestigt ist.
Die Leine repräsentiert einen Zeiger auf den Hund. Wenn du einen Zeiger (Leine) erstellst und keine auch eine Struktur hast, auf die du (Hund) zeigen kannst, dann kannst du nicht in den Park gehen und Frisbee spielen.
Wenn Sie eine Struktur haben, aber keinen Zeiger haben, können Sie immer noch viele Dinge tun.
Die Verwendung eines Zeigers erfordert eine Struktur, auf die verwiesen werden kann. Sie können entweder eine Struktur, erklären und dann darauf zeigen die &
Operator, oder Sie können eine Funktion wie malloc
oder calloc
aufrufen, die zurückkehren wird dynamisch zugewiesenen Speicher, die Sie als Struktur verwenden können:
void demo() {
struct Book b1;
struct Book b2;
typedef struct Book * Bookptr;
Bookptr p;
// Assign pointer to existing object using address operator:
p = &b1;
p->i = 10;
p = &b2;
p->i = 12;
printf("Book 1 has i: %d, while Book 2 has i: %d\n", b1.i, b2.i);
// Use dynamically allocated memory
p = calloc(1, sizeof(struct Book));
p->i = 3;
printf("Dynamic book has i: %d\n", p->i);
free(p);
}
'ptr' ist nicht initialisiert, daher hat jeder Zugriff (' * 'oder' -> ') UB. Ist es das, was du meintest? – edmz
Mögliches Duplikat von [Was sind die Unterschiede zwischen einer Zeigervariablen und einer Referenzvariablen in C++?] (Http://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable- und-eine-Referenz-Variable-in) – Turtle
Vielen Dank für Ihre Antwort. Entschuldigung, ich habe dich nicht verstanden. Kannst du es dir nicht klar erklären, wenn möglich – Lokesh