Назначения для массивов указателей на структуры - PullRequest
0 голосов
/ 14 апреля 2020

В настоящее время я работаю над проектом C, чтобы выполнить c моделирование алгоритмов планирования ЦП для произвольного числа процессов sudo (с некоторыми их атрибутами), заданных через входные данные. TXT-файл.

Я хочу создать массив структур для процессов и очередь, которая является массивом указателей на эти структуры. Обладая знаниями о 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]; для инициализации очереди или мне нужно выполнить несколько операций mallo c () magi c?

1 Ответ

0 голосов
/ 14 апреля 2020

Это зависит от того, используете ли вы стандарт C89 C при компиляции вашей программы. C89 требует, чтобы все размеры массива могли быть определены во время компиляции, но C99 и далее сняли это ограничение. Если вы используете C89, то вам придется использовать malloc для выделения массива, иначе то, что у вас есть, будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...