我有一个嵌套结构如下:
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
答案 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;