在C中创建结构数组?

在C中创建结构数组?,c,arrays,data-structures,C,Arrays,Data Structures,可能重复: 我有一个结构数据,它有两个字段(int-id和char-dat) 我为它分配内存: DATA *current = malloc(sizeof(DATA)); 并指定所有字段: current->id = 1; current->dat = a; 我不知道该怎么做…是如何将我刚刚初始化的数据添加到一个数据数组中(声明为DATA lstData[100]) 另外,从前面的问题来看,我觉得在这种情况下可能不需要malloc,因为我有一个100个数据元素的静态数组?在这

可能重复:

我有一个结构数据,它有两个字段(int-id和char-dat)

我为它分配内存:

DATA *current = malloc(sizeof(DATA));
并指定所有字段:

current->id = 1;
current->dat = a;
我不知道该怎么做…是如何将我刚刚初始化的数据添加到一个数据数组中(声明为DATA lstData[100])


另外,从前面的问题来看,我觉得在这种情况下可能不需要malloc,因为我有一个100个数据元素的静态数组?在这种情况下,以下代码将失败:

lstProc[10]->id = 1; //Error: Program received signal: "EXC_BAD_ACCESS"

你说得对。不需要去malloc。由于您有一个结构数组(不是指向结构的指针),请使用:


如果您有静态数据结构数组,而不是指向数据的指针数组,则需要使用点来访问特定的数据成员:

lstProc[10].id = 1;
并回答您原来的问题:

memcpy(&(lstProc[10]), current, sizeof(DATA));

这个问题与你之前的问题相似(甚至有相同的标题)。你应该编辑并清理这个问题,而不是从Scratch中创建一个新的问题。你可以发布你的数组初始化吗?因为要使用(->或。)的运算符取决于您是为指向数据结构的指针定义数组还是直接在数据结构上定义数组。要使数组成为全局数组,我将在头文件中将其定义为DATA lstData[0],然后在主文件中,当我实际知道大小(从用户输入)时,再次在那里定义它?数据lstData[inputsize]
memcpy(&(lstProc[10]), current, sizeof(DATA));