我如何在 C 中定义一个数据结构,我想在其中存储每个位置:一个大小为 M 的 int 数组、一个大小为 N 的 int 数组和一个 double 值?我尝试了以下但没有成功。
在我的代码开头,我定义了我的数据结构 (LOCOPT),如下所示:
typedef struct LOCOPT
{
int *org;
int *des;
double value;
} LOCOPT;
LOCOPT *locopt;
然后,我使用 calloc 初始化了 locopt,如下所示:
for( locopt_ctr=0 ; locopt_ctr<locopt_max ; locopt_ctr++ )
{
locopt[locopt_ctr].org = (LOCOPT *) calloc(M, sizeof(LOCOPT));
locopt[locopt_ctr].des = (LOCOPT *) calloc(N, sizeof(LOCOPT));
}
当我尝试在代码中使用它时它不起作用:我想这样做:
for( m=0 ; m<M ; m++ )
locopt[locopt_ctr].org[m] = origin[m]; // regardless of what origin[m] is.
我需要多次使用 calloc 而不是一次,但我不知道该怎么做。我需要正确使用循环。有什么想法吗?
最佳答案
您的分配有两个问题,一个是关于locopt
数组本身的内存,另一个是关于您如何为des
和 分配内存>org
在每个结构中。
首先,我们看不到您是否曾为您的 locopt 结构数组分配内存。如果有 L
元素,你可以这样做
locopt = calloc(L, sizeof(LOCOPT));
然后,你仍然需要像这样为其中的字段org
和des
分配内存(对于每个结构,就像你所做的那样),但是
locopt[locopt_ctr].org = calloc(M, sizeof(int));
des
也是如此。 LOCOPT
是结构的名称,但数组的类型是 int
。
关于c - C 中的数据结构,指针为 : I want to store an array of information in each position,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21588644/