我对此感到有些困惑,因为我正在查看调度程序的一些代码,并且他们定义了一个struct PCB(过程控制块),该PCB基本上包含一堆有关正在运行的进程和struct队列的信息。队列基本上只是管理流程执行的顺序,而且偶尔会跨队列移动流程(例如,将PCB从队列1移到队列2)。队列结构实质上定义为
struct Queue{
pcbptr front;
pcbptr back;
}
其中pcbptr定义为
typedef pcb * pcbptr
我对为什么在这种情况下使用pcbptr而不是简单地定义队列以使用pcb感到有些困惑?
谢谢你的帮助
最佳答案
原因仅仅是因为时间。指向不同结构的指针比按值复制结构要快得多。
同样,使用队列的人可能希望修改PCB,如果PCB通过价值传递,他们将无法做到。
另外,如果您要问为什么他们不简单地使用PCB *而不是将PCB *类型定义为pcbptr,那完全取决于命名约定。它们在功能上完全相同。
关于c - 使用结构指针仅提供结构有什么好处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29528644/