2016-05-16 11 views
-4

zum BeispielC++: was bedeutet `typedef struct {......} * Knoten;` bedeuten?

typedef struct PNode { // PCB 
    struct PNode *next; // 定义指向下一个节点的指针 

    char name[10]; // 定义进程名,并分配空间 

    int Reach_Time; //定义到达时间 

    int Quantum; //定义时间片 

    int All_Time; // 定义总运行时间 

    int Runed_Time; // 定义已运行时间 

    char state;  // 定义进程状态 Ready/End 

    bool sign = true; //用于排序中的标识 
}*Proc; // 指向该PCB的指针 

Beachten Sie, dass es vor Proc einem '*' ist.

Ich weiß nicht, welche Anstrengung das '*' machen.

+6

Es ist C++ von jemandem geschrieben, der wünscht sie wurden in C programmiert By the way, was sind diese Kommentare zu sagen? – 5gon12eder

+0

Um es zu einem Zeiger zu machen. – songyuanyao

+1

@ 5gon12eder (und guo): Sieht für mich glatt aus, ich sehe kein C++ darin. –

Antwort

2

Proc ist ein Typdef für eine struct PNode*.

Die Erklärung entspricht:

struct PNode { 
    struct PNode *next; 
    char name[10]; 
    int Reach_Time; 
    int Quantum; 
    int All_Time;  
    int Runed_Time; 
    char state;  
    bool sign = true; 
}; 

typedef struct PNode* Proc; 

Es ist nur eine Verknüpfung der Einnahme der strut und die typedef in einer Erklärung erklärt.

1

Wenn der Start nicht dort wäre, wäre Proc ein typedef zu struct PNode.

Jetzt mit dem Stern vorhanden, Proc ist typedef ed auf PNode *, das heißt, wenn Sie Proc schreiben, meinen Sie einen Zeiger auf eine PNode-Struktur.

1

* am Ende eines Typs Ausdruck bedeutet, es ist ein Zeiger auf den beschriebenen Typ. So ist der Proc Typ ein Zeiger auf eine Pnode Struktur.

Es ist nicht anders, als wenn Sie geschrieben hatte:

typedef int * IntPtr; 

, die einen IntPtr Typ definiert, die einen Zeiger auf eine ganze Zahl bedeutet.

Beachten Sie, dass es allgemein als schlechter Stil gilt, typedefs für Zeiger zu erstellen (mit Ausnahme von Funktionszeigern). Es ist besser, den Zeiger in den Variablendeklarationen explizit zu halten. So erklären nur die Struktur, und deklarieren Variablen wie:

Pnode *my_pnode; 

Der Hauptvorteil eines Zeigers typedef ist, dass Sie mehrere Variablen, ohne die * Wiederholung erklären kann. Also statt

Pnode *proc1, *proc2, *proc3; 

können Sie schreiben:

Proc proc1, proc2, proc3;