使用struct指针只给结构带来什么好处?

时间:2015-04-09 02:20:05

标签: c pointers struct

我对此感到有点困惑,因为我正在查看调度程序的一些代码,他们定义了一个struct PCB(进程控制块),它基本上包含有关正在运行的进程和struct队列的一堆信息。队列基本上只管理进程执行的顺序,但也会在队列之间移动进程(例如,将PCB从queue1移动到queue2)。队列结构基本上定义为

struct Queue{
   pcbptr front;
   pcbptr back;
}

其中pcbptr定义为

typedef pcb * pcbptr

我有点困惑为什么在这种情况下你会使用pcbptr而不是简单地定义队列来使用pcb?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

原因很简单,因为时间。指向不同结构的指针比通过值获得结构副本更快。 此外,使用队列的人可能希望修改PCB,如果按值传递PCB,他们将无法做到这一点。

另外,如果你问他们为什么不简单地使用PCB *而不是将PCB *打成pcbptr,那就完全取决于命名惯例。它们在功能上完全相同。

答案 1 :(得分:0)

只需考虑一个队列及其在不同长度的含义。

如果它是0,你需要以某种方式告诉我们(通常只需将前面和后面的指针设置为NULL)。

如果是1,前后两者都需要指向同一个东西。

如果它是2,它们指向不同的东西,但有一个链接从一个到另一个。

如果是3,则前点为第一个,第一个指向中间点,中间点指向最后一个,后点指向最后一个。

所以无论你做什么,使用像这样的可变大小你需要使用指针。对于中间的..为什么要打扰前面和后面的东西,除了一个指针? (特别是因为更改指针比尝试移动结构更快,代码大约复杂100倍)