Процесс завершен с кодом выхода -1073741819 (0xC0000005) - C, Clion - PullRequest
0 голосов
/ 07 января 2020

Я выполняю свою функцию InitializeMsgQs ():

struct MsgQs_t *pst;

struct MsgQs_t queue[10];

void initializeMsgQs() {
    int qNumber = 0;
    printf("Enter queue number:\n");
    scanf("%d", &qNumber);
    *pst = queue[qNumber];
    printf("Enter identifier: \n");
    // assigning the identifier as an element in the queue array
    scanf("%d", &queue[qNumber].id);

}

После ввода номера очереди мне выдается следующее сообщение: Процесс завершен с кодом выхода -1073741819 (0xC0000005), когда меня должны попросить введите идентификатор очереди.

queue - это массив структуры размера 10, а идентификатор имеет тип int внутри основной структуры.

1 Ответ

0 голосов
/ 07 января 2020

*pst = queue[qNumber]; должно быть pst = &queue[qNumber];. queue - это массив структур, а pst - указатель на такую ​​структуру. Таким образом, вы должны поместить адрес структуры queueu в pst.

Запись *pst = queue[qNumber]; правильная и будет означать присвоение данных элемента очереди тому, на что указывает pst. Тем не менее, pst нигде не указывает (это по-прежнему 0).

См. Также комментарий Ctx о проверке, что было прочитано правильное число.

...