2016-05-16 163 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;