2016-05-16 142 views
-4

例如C++:typedef struct {......} * node是什麼意思?

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的指針 

注意,有一個 '*' Proc之前。

我不知道'*'做了什麼努力。

+6

這是C++的人誰whishes他們在C.被編程順便說寫,什麼是這些評論在說什麼? – 5gon12eder

+0

使其成爲指針。 – songyuanyao

+1

@ 5gon12eder(和guo):看起來像我的直線C,在那裏看不到任何C++。 –

回答

2

Procstruct PNode*的typedef。

聲明等同於:

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; 

它只是把聲明strut的快捷方式,在一個聲明中的typedef。

1

如果開始不在那裏,Proc將是一個typedef結構PNode。

現在,隨着星星出現,Proctypedef編輯到PNode *,這意味着當你寫Proc你的意思是指向一個PNode結構的指針。

1

*在類型表達式的末尾意味着它是指向所描述類型的指針。所以Proc類型是一個指向Pnode結構的指針。

這是沒有什麼不同,如果你寫:

typedef int * IntPtr; 

定義的IntPtr類型,這意味着一個指向整數。

請注意,它通常被認爲是糟糕的風格來創建指針的typedef(函數指針除外)。最好將指針保持在變量聲明中。所以只需要聲明的結構,並聲明變量一樣:

Pnode *my_pnode; 

指針的typedef的主要好處是,你可以聲明多個變量,而無需重複*。因此,而不是

Pnode *proc1, *proc2, *proc3; 

你可以寫:

Proc proc1, proc2, proc3;