这是我的代码:
struct queue {
int queue_arr[5];
int rear;
int front;
};
int main()
{
struct queue q;
int choice;
queue_init(q);
}
queue_init(struct queue *q)
{
int i = 0;
q->rear = -1;
q->front = -1;
for (; i < MAX; i++) {
q->queue_arr[i] = 0;
}
}
它会导致执行时出现段错误:
[root@workmachine test_cpp]# ./queue Segmentation fault (core dumped)
如果删除结构,我将使用 int queue_arr[5];内部后部; int front;
因为全局段错误消失了。为什么?以及如何避免使用结构?
最佳答案
你应该传递地址:
queue_init(&q);
^
我很惊讶它能按原样编译。
关于c - 为什么错误的结构会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383099/