我有类型结构的二维映射,我想将结构的条件元素初始化为枚举未知。
编译没问题,但它给出了我无法解决的段错误。
#include<stdio.h>
enum myenum {EXPLORED, UNKNOWN,}condition;
struct tile {
int x;
int y;
int condition;
};
struct tile* map[8][8];
void init_map() {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
map[i][j]->condition = UNKNOWN;
}
printf("\n");
}
}
void print_map() {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
printf("%d ", map[i][j]->condition);
}
printf("\n");
}
}
void main() {
init_map();
print_map();
}
非常感谢任何帮助
最佳答案
程序中的错误是 map
是一个从未被分配指向任何对象的指针数组。因此,
map[i][j]->condition = UNKNOWN;
和
printf("%d ", map[i][j]->condition);
导致未定义的行为。
尚不清楚为什么需要指针数组。您可以只使用对象数组。
struct tile map[8][8]; // Drop the pointer
并使用
map[i][j].condition = UNKNOWN;
和
printf("%d ", map[i][j].condition);
关于c - 这段C语言代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955672/