c - 总线错误: 10 in data generation in C

标签 c

这是我对边缘的定义。

typedef struct Edge{
    int first;
    int second;
}Edge;

在我的主要部分中,我尝试生成一组随机边并将它们写入数组中。

int main(){

const int NUM_VERTICES = 1024;
const int NUM_EDGES = 1024;

Edge* edges[NUM_EDGES];

for (int i = 0; i < NUM_EDGES; ++i)   
    {
        edges[i]->first = (rand() % (NUM_VERTICES+1));
        edges[i]->second = (rand() % (NUM_VERTICES+1));
    }
    printf("Reached here");
    printf("Data Set: ");


    for (int i = 0; i < NUM_EDGES; ++i)
    {
        printf("%d -> %d", edges[i]->first, edges[i]->second);
        printf(((i % 4) != 3) ? "\t":"\n");
    }
return 0;
}

当我运行这个程序时,我得到一个

Bus error : 10

我在这里做错了什么。

最佳答案

数组edges未初始化。所以你不能尊重它的元素。这个undefined behaviour 。您似乎并不真正需要指针数组。所以只需使用一个数组:

Edge* edges[NUM_EDGES];

Edge edges[NUM_EDGES];

并将代码中各处的 -> 更改为 . 运算符。

关于c - 总线错误: 10 in data generation in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253645/

相关文章:

c - scanf() 在 malloc 结构成员中不起作用

c - 哪种方法更好?

c - C语言dll调试

c - 赋值宏编写

在 Linux 中使用 C 控制 PWM 设备

c - GDB 调试 : Passing arguments using IO redirection

我们可以通过给static在C中的2个不同文件中使用相同的函数名吗?

c++ - void* 可以用来存储函数指针吗?

c++ - ##家庭是什么意思

c - 如何将结构体指针赋值为null?