2016-10-21 1 views
0

In diesem Code ist ein Kopfobjekt direkt vor der Strukturdefinition, gemacht, aber das n ist in int Haupt gemacht.was ist der Unterschied zwischen der Herstellung des Kopfes und n in den Code

Können wir einfach erklären, wie der Kopf deklariert wurde? Ich denke, ich verstehe einfach nicht, wie struct node *n ist anders als die Art und Weise Kopf erklärt wurde, weil sie beide Objekte richtig sind?

struct node 
    { 
     int data; 
     struct node *next; 
    }*head; 
    . 
    . 
    . 
    int main() 
    { 
     int i,num; 
     struct node *n; 
     head = NULL; 
     ... 
+1

"* sie sind beide Objekte richtig? *" - "head" und "n" bezeichnen beide "Objekte" im Sinne des C-Standards, aber auch "i" und "num" bezeichnen Objekte darin Sinn. Ich denke, du magst "Objekte" in einem mehr OO-Sinne, der "Strukturen" entspricht, aber hier musst du vorsichtig sein: es sind "Kopf" und "* n", die Strukturen bezeichnen; 'head' und' n' bezeichnen keine Strukturen, sondern * pointer *, die eigenständige eigenständige Objekte (C sense) sind. –

Antwort

0

"Kopf" ist ein globaler Zeiger, wobei "n" lokaler Zeiger auf Knotenstruktur ist.

Beachten Sie auch, dass weder "head" noch "n" Objekte sind. Sie sind Zeiger auf Objekte der Knotenstruktur. Sie müssen Speicher für sie reservieren.

1

In Ihrem Code mischen Sie die Deklaration struct node und die Deklaration der Variablen head, die C korrekt ist, aber TBH nicht sehr lesbar.

Schreiben Sie Ihren Code eher so:

struct node 
{ 
    int data; 
    struct node *next; 
};     // declaration of struct node 

. 
. 
struct node *head; //declaration of a variable head of type "pointer to struct node" 
. 
. 
. 
int main() 
{ 
    int i,num; 
    struct node *n; //declaration of a local variable n of type "pointer to struct node" 
    head = NULL; 
    ... 

es zu Ihrem Code äquivalent ist, aber mehr lesbar.

Verwandte Themen