我正在运行我的 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关于检查是否读取了有效数字的评论。