c - C 中的数据结构,指针为 : I want to store an array of information in each position

标签 c arrays pointers data-structures calloc

我如何在 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));

然后,你仍然需要像这样为其中的字段orgdes分配内存(对于每个结构,就像你所做的那样),但是

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/

相关文章:

c - 在 C 中显示原始值的字节表示

c - 请告诉我我做错了什么,因为 Monthstr2num 返回的值是错误的

c - 为什么这些代码给我一个 sigsegv 错误?

arrays - Swift switch case 使用数组内容,语法?

将十六进制char数组转换为C中的u8数组

c - 带有指针的段错误 : 11,

c - gcc 警告 : braces around scalar initializer

java - 在另一个数组中搜索数组 - 算法

c++ - 我能保证所有指针都具有相同的字节大小吗?

在C中更改指针字符串数组中的值