struct GENERATIONS
{
char generation[MAX_ROWS][MAX_COLS];
int hasCycle;
};
typedef struct GENERATIONS Generation;
我有一个结构类型的数组:
Generation generations[MAX_GENERATIONS];
我这样声明一个Generation
变量:
Generation *currentGeneration = NULL;
currentGeneration = (Generation *) malloc(sizeof(Generation));
并尝试将世代添加到世代数组中:numGenerations 设置为 0,然后通过循环递增。
copyGeneration(currentGeneration);
generations[numGenerations] = currentGeneration;
然而,每次从类型“struct Generation *”分配给类型“Generation”时,我都会收到类型不兼容的错误。我知道这与我不理解但需要的指针有关。
为什么当我将数组声明为:
Generation *generations[MAX_GENERATIONS];
突然一切正常?
最佳答案
每个 currentGeneration
都是指向 Generation
的指针。然而,当您声明一个数组 Generation generations[MAX_GENERATIONS]
时,它期望每个索引是 Generation
,而不是指向一个的指针。但是,当您将数组声明为 Generation *generations[MAX_GENERATIONS]
时,它期望每个索引都是指向 Generation
的指针,这就是您分配给每个索引的内容。
关于c - 向结构数组添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30881245/