例如
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
之前。
我不知道' *'使
答案 0 :(得分:2)
Proc
是struct 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结构的指针。