c - 向结构数组添加元素

标签 c arrays multidimensional-array struct

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/

相关文章:

c# - 如何在不遍历元素的情况下将 int 数组转换为可为 null 的 int 数组?

c - C中二维数组的段错误

c - 返回错误的首选方式是什么?

c - 试图找到字符串中某些字符的频率,但结果相去甚远

java - 在 Java 中对整数数组进行冒泡排序(递归)时出现问题

C - 找出所有不同的数字

php - 将 session 数组存储到变量中

c++ - 如何从类/构造函数实际初始化对象的二维 vector

c - 垃圾值;奇怪的字符串 strlen 值

c - 没有 dlsym 的 Linux 中的函数插入