这是我对边缘的定义。
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/