在C中寻址嵌套结构的值

时间:2012-02-15 13:09:29

标签: c struct nested

我有一个嵌套结构如下:

typedef struct {
   float mz_value;
   float int_value;
} spectrum;
typedef struct {
   // stuff
   spectrum* spectra; /* Nested struct */
   // more stuff
} chromatogram;

我在代码中分配内存如下:

(chrom+i)->spectra=malloc(sizeof(spectrum)*1024);

然后我想给它分配一些值,我一直在尝试各种类似的语法:

((chrom+i)->(spectra+j))->mz_value = (float)*(array_buffer+j);
// array_buffer is a float*

然而,这仍然给我一个错误,我没有正确使用括号,唯一的问题是我无法弄清楚oO在我后悔尝试使用嵌套结构之前,我会非常感激任何帮助。< / p>

干杯, BAS

2 个答案:

答案 0 :(得分:4)

尝试

((chrom+i)->spectra+j)->mz_value = (float)*(array_buffer+j);

或者,最好使用数组表示法,在这种情况下更清晰:

chrom[i].spectra[j].mz_value = (float)array_buffer[j];

答案 1 :(得分:0)

您的光谱值不是静态分配的结构,而是指针 你需要为它分配内存。

如果您打算使用固定数量的频谱项目 使用静态分配的数组

spectrum spectra[someConstantValue]; 

或动态分配/释放它,在这种情况下,您还需要保留多个元素。

typedef struct {
   // stuff
   spectrum* spectra; /* Nested struct */
   int count;
   // more stuff
} chromatogram;