进程结束,退出代码为 -1073741819 (0xC0000005) - C,Clion

Process finished with exit code -1073741819 (0xC0000005) - C, Clion

我是 运行 我的 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 的结构数组,id 是 int 类型,在主结构中。

*pst = queue[qNumber]; 应该是 pst = &queue[qNumber];queue 是一个结构数组,pst 是指向这种结构的指针。所以必须把queueu结构的地址放在pst.

*pst = queue[qNumber]; 是正确的,意味着将队列元素的数据分配给 pst 指向的内容。但是,pst 没有指向任何地方(它仍然是 0)。

另请参阅 Ctx 关于检查是否读取了有效数字的评论。