我有以下结构:
typedef struct _chess {
int **array;
int size;
struct _chess *parent;
} chess;
我有:
typedef struct _chess *Chess;
现在,我想创建一个动态长度数组来存储指向国际象棋结构的指针,因此我执行以下操作:
Chess array [] = malloc(size * sizeof(Chess));
这给了我一个错误:无效的初始值设定项。
如果我放下 [] 并执行此操作:
Chess array = malloc(size * sizeof(Chess));
它编译没有错误,但是当我尝试通过执行以下操作将此数组的元素设置为 NULL 时:
array[i]=NULL;
我收到一个错误:从类型“void *”分配给类型“struct _chess”时类型不兼容
知道我做错了什么吗? 谢谢。
最佳答案
array
是一个有点误导的名称。对于动态分配的指针数组,malloc
将返回一个指向内存块的指针。您需要使用 Chess*
而不是 Chess[]
来保存指向数组的指针。
Chess *array = malloc(size * sizeof(Chess));
array[i] = NULL;
也许以后:
/* create new struct chess */
array[i] = malloc(sizeof(struct chess));
/* set up its members */
array[i]->size = 0;
/* etc. */
关于c - malloc 结构指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811439/