2012-09-12 66 views
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; 
     } 
} 

它会导致在执行分段错误:

[[email protected] test_cpp]# ./queue Segmentation fault (core dumped) 

如果我删除结构我将使用int queue_arr[5]; int rear; int front;作为全球细分误差消失。为什么?以及如何避免它使用结构体白衣?

+0

什么是'''MAX'''? – tangrs

+0

对不起,#define MAX 5. – rdo

回答

6

您应该通过地址:

queue_init(&q); 
     ^

我很惊讶,它编译,因为它主张。

+0

它有帮助,谢谢! – rdo

+1

''queue_init()'在'main()'中被调用之前未被声明。也许这可以让编译成功,并带有警告? – hmjd

+0

@hmjd *非常好,谢谢! – cnicutar