进程已完成,退出代码为 -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是指向此类结构的指针。因此,您必须将队列结构的地址放在pst中。

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

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

最新更新