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 - 除了 pthread_create 在 linux 上创建 linux 线程的方法

c - 通过指针的二维数组

php - MYSQL - 多维数组 - 循环还是递归?

javascript - replace() 方法不替换任何东西

C - 结构体字符串元素被连接

arrays - 无法快速访问 JSON 中嵌套数组的数据

将系统的使用更改为 C 中的 Fork 和 exec

c - 我应该在 DLL 导出函数上使用 __stdcall 吗?

Android 登录 native 代码不显示

arrays - Golang graphql 使用子图迭代 map