c - 这段C语言代码有什么问题?

标签 c multidimensional-array struct segmentation-fault

我有类型结构的二维映射,我想将结构的条件元素初始化为枚举未知。

编译没问题,但它给出了我无法解决的段错误。

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

相关文章:

c - 这个 typedef 是如何工作的?

python - 多维数组的索引

php - Laravel Collections - 在多维集合上使用 Except

c - 如何将结构中的多个 void 指针取消引用到 1 block 内存中?

有理多项式数组的编译错误

c - 如何近似灰度图像中的线段?

c - 带和不带结构名称的 Typedef

c - 如果使用 Ctrl+c 关闭客户端,服务器会在 `send` 死机

javascript - 查找不包含数字的子数组的索引

C - 'typedef struct SymTable *SymTable_T; 是什么意思?意思是?