0

これが私のコードです:

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 rear; int front;と、グローバルセグメンテーションエラーが消えるので使用します。なんで?構造体を使用してそれを回避する方法は?

4

1 に答える 1

6

アドレスを渡す必要があります:

queue_init(&q);
           ^

そのままコンパイルできるのには驚きました。

于 2012-09-12T07:26:01.763 に答える