c - 为什么错误的结构会导致段错误

标签 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;
        }
}

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

[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/

相关文章:

c - 从结构指针打印间歇性失败

c - 将许多结构添加到数据结构(需要左值作为一元 '&' 操作数)

将结构体值与变量进行比较

C - 单例在模块内部还是外部实例化?

我们可以将负数的整数分配给无符号整数吗?

c - 如何避免使用全局变量?

php - PHP 使用什么子字符串算法(查找字符串)?

c - valgrind : Conditional jump or move depends on uninitialised value using strlen() strncat()

c++ - 当函数必须访问其他成员时,如何将 lambda 函数分配给结构成员?

arrays - C 指向 int(*)[row] 类型的动态数组的指针,其中 row 在结构内部未分配