0

ist der Teil eines Codes Nach derdefinieren Variable auf eine Struktur

struct node 
{ int data; 
struct node *link; 
}*head; 

In dem obigen Quellcode für die Herstellung einer verknüpften Liste schrieb, möchte ich fragen, dass ob Kopf eine Variable "Knoten ist " oder nicht. Ich denke, dass, wie ich es mit der Struktur deklariert habe, so muss es eine Variable zu der definierten Struktur & so enthalten einen Datenteil & ein Adressteil. Wenn ich falsch liege kann mir bitte jemand sagen, was ist die Rolle von * Kopf & ist es eine Variable oder nicht? Jetzt

, ist dies der zweite Teil des gleichen Quellcode

void addbeg() 
{ 
int d,g; 
struct node *temp; 
temp=(struct node *)malloc(sizeof(struct node)); 
} 

Hier void addbeg ist eine Funktion, jetzt hier wir eine weitere Variable struct node erklärt, warum dann sind wir es Speicher gleich einem int Zuteilung, Da es sich um eine Variable zum Strukturknoten handelt, muss sie die Größe eines Zeigers & a int enthalten. Aber warum reservieren sie immer noch Speicher. Bitte lösche auch diese Zweifel.

+1

Nun bitte erklären Sie uns, warum * sind * Zuweisung Sie Speicher für einen einzelnen 'struct'? Zur ersten Frage ist "* head" ein * Zeiger * auf "struct node". –

+2

Oh, wow, Sie müssen zuerst die Zeiger und das Speichermanagement in C studieren (ebenso wie die Erklärung von struct), sonst wäre jede Antwort lächerlich groß. – ForceBru

Antwort

1

Ich werde versuchen, Ihre Fragen kurz zu erklären, aber um Ihre Verwirrung zu lösen, @ ForceBru Kommentar ist die richtige Idee.

  1. Die Verwendung von struct in C, variable direkt nach der Definition eines struct definiert, ist eine Abkürzung getrennt, diese beiden Schritte zu tun, um es gleich nämlich define the struct + struct node *head (eine Variable die auf eine struct Knoten definieren,/ein Zeiger auf den Knoten).

  2. temp als Zeiger auf eine Struktur Knoten ähnelt Variable node, mit der Ausnahme, dass es jetzt ist Hinweis auf eine echte Struktur Knoten, der im Speicherraum nur zugewiesen wurden (mit malloc). Es ähnelt dem folgenden Code, unterscheidet sich jedoch darin, ob der Compiler oder Sie selbst den zugewiesenen Speicher verwalten sollen (aufgrund der dynamischen Speicherzuweisung).

    // define a struct node that's allocated and managed by the compiler 
    struct node nodeOfTemp; 
    struct node *temp = &nodeOfTemp; 
    
+0

Bitte beachten Sie die folgende Code-Struktur Student Struct Student { Char Name [50]; int roll; Schwimmermarken; } s1; Hier ist s1 eine Variable zu oben Struktur des Studenten und wird alle Teile der Struktur haben und nicht irgendeine Adresse, wie im obigen Fall der Struktur Knoten kommen, * Kopf ist ein Zeiger. –

Verwandte Themen