所以我试图修改一些代码,我需要创建一个结构数组。结构声明如下:
typedef struct header
{
int sample_rate;
int num_channels;
int bit_res;
int num_samples;
char *data;
} header;
typedef struct header* header_p;
创建和使用此结构数组的正确方法是什么?我试着做一些类似的事情:
header_p fileHeader;
...
fileHeader = (header_p)malloc(sizeof(header) * (argc-1));
这似乎有效,但我不确定如何正确访问数组。
编辑:(我的一些问题不知怎么被切掉了)
当我试图这样访问数组时:
fileHeader[0]=返回header的函数;
我得到以下编译错误:
incompatible types when assigning to type ‘struct header’ from type ‘header_p’
编辑:(想清楚了)
在遵循Lundins的建议删除隐藏结构指针的愚蠢typedef之后,更容易看到发生了什么。这样就更容易看出亚历克斯关于需要取消引用我的指针的观点是正确的。我会接受亚历克斯的回答,因为从技术上讲那是我的问题。
最佳答案
在这里:
fileHeader[0] = function that returns header_p;
你忘了指针解引用。
fileHeader[0] = *function_returning_header_p();