所以我试图修改一些代码,我需要创建一个struct的数组。结构声明如下:
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_p;
的函数
我收到以下编译错误:
incompatible types when assigning to type ‘struct header’ from type ‘header_p’
编辑:(想出来)
在遵循Lundins的建议去除隐藏结构指针的愚蠢的typedef后,它变得更容易看到发生了什么。然后更容易看出亚历克斯是否正确需要取消引用我的指针。我将接受亚历克斯的回答,因为从技术上讲这是我的问题。
答案 0 :(得分:2)
创建和使用此结构数组的正确方法是什么?
header* fileHeader;
fileHeader = malloc(sizeof(header) * (argc-1));
答案 1 :(得分:1)
下面:
fileHeader[0] = function that returns header_p;
你忘了指针取消引用。
fileHeader[0] = *function_returning_header_p();
答案 2 :(得分:0)
你可以像这样访问它:
fileHeader[0].bit_res = ...
fileHeader[1].num_samples = ...
因为它是一个指针,所以你在[]
的索引处使用它。然后,您使用.
访问成员。