我有类型结构的二维地图,我想初始化结构的条件元素到枚举UNKNOWN。
编译没问题,但它给出了我无法解决的分段错误。
#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();
}
非常感谢任何帮助
答案 0 :(得分:2)
程序中的错误是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);