c ++:`typedef struct {......} * node;`是什么意思?

时间:2016-05-16 15:59:15

标签: c++

例如

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之前。

我不知道' *'使

3 个答案:

答案 0 :(得分: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 :(得分:2)

类型表达式末尾的

*表示它是指向所描述类型的指针。因此Proc类型是指向Pnode结构的指针。

和你写的一样没有什么不同:

typedef int * IntPtr;

定义了IntPtr类型,表示指向整数的指针。

请注意,为指针创建typedef通常被认为是不好的样式(函数指针除外)。最好将指针显式保存在变量声明中。所以只需声明结构,并声明变量,如:

Pnode *my_pnode;

指针typedef的主要好处是可以声明多个变量而无需重复*。而不是

Pnode *proc1, *proc2, *proc3;

你可以写:

Proc proc1, proc2, proc3;

答案 2 :(得分:1)

如果开头不在那里,Proc将是typedef来构造PNode。

现在存在星号,Proc typedef为PNode *,这意味着当您编写Proc时,您指的是指向PNode结构的指针。