指向结构的指针数组的分配

时间:2020-04-14 00:15:19

标签: c pointers struct

当前,我正在一个 C 项目上,对通过输入.txt文件提供的任意数量的sudo进程(具有某些属性)进行CPU调度算法的基本仿真。 / p>

我想为进程创建一个结构数组,并创建一个指向这些结构的指针数组的队列。以我对C指针的了解,我相信我可以通过这种方式创建和分配指针数组,但是每次我在网上查找如何执行此操作时,都会找到不同的解释。这是我的结构和指针代码:

struct Process
{
    int id;
    int arrival;
    int burst;
    int priority;
};


int main()
{
    //create array of Process(es) from input.txt
    //numProcesses is obtained from parsing input.txt
    struct Process processes[numProcesses];

    //create ready queue for CPU scheduling
    struct Process* fifoQueue[numProcesses];

    //assume processes[] is filled here with info from input.txt

    //loop through processes[] adding entries to the queue
    for(i=0; i < numProcesses; i++)
    {
        //this is what I am confused about
        fifoQueue[i] = &processes[i];
    } 
}

是否可以使用fifoQueue[i] = &processes[i];初始化队列,还是必须做一些malloc()魔术?

1 个答案:

答案 0 :(得分:0)

这取决于编译程序时是否使用C89 C标准。 C89要求能够在编译时确定所有数组大小,但是C99及更高版本消除了此限制。如果您使用的是C89,则必须使用malloc来分配数组,否则,您所拥有的就可以了。