为什么struct with error会导致分段错误

rdo*_*rdo 0 c struct

这是我的代码:

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;
        }
}
Run Code Online (Sandbox Code Playgroud)

它会导致执行时出现分段错误:

[root@workmachine test_cpp]# ./queue  Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

如果我删除结构,我将使用int queue_arr[5]; int rear; int front;全局分割错误消失.为什么?以及如何避免使用结构?

cni*_*tar 6

你应该传递地址:

queue_init(&q);
           ^
Run Code Online (Sandbox Code Playgroud)

我很惊讶它现在编译.