我的结构就像跟随者一样:
typedef struct author
{
char letter;
char *name[200];
int counter;
} Aut, *i_aut;
它由一个char和一系列" Strings"组成。和int。我的目标是在内存中为这种结构中的30个数组分配空间,因此我尝试了类似下面的内容:
i_aut lista_autores=calloc(30,sizeof(Aut));
然而,它总是返回"分段错误"。我试图一次初始化一个,但结果相同。我的问题是,如何分配此类内存以及如何在以后访问它?
提前感谢您,对于任何错字都感到抱歉。
答案 0 :(得分:0)
struct member name
是一个包含200个指针的数组
您可能希望将malloc
的结果分配给数组的元素。
struct author *i_aut;
i_aut = malloc(sizeof *i_aut);
if (i_aut) {
for (size_t k = 0; k < 200; k++) {
i_aut->name[k] = malloc(30);
if (!i_aut->name[k]) /* error */;
/* DONT FORGET TO FREE EACH NAME LATER ON */
}
free(i_aut);
}
答案 1 :(得分:0)
尝试使用此
struct author **i_aut;
i_aut=(struct author **)malloc(30*sizeof(struct author*));
for(i=0;i<30;i++)
i_aut[i]=(struct *)malloc(sizeof(struct author));
之后你不需要单独为name []分配空间。 你有数组struct author *的30个元素的数组 并且您可以使用访问所有三种类型 i_aut [Ⅰ] - &GT;信; i_aut [Ⅰ] - &GT;名称[J]; i_aut [Ⅰ] - &GT;计数器; 我在这里<30