我想在struct中有一个数组,它将存储相同数据类型的指针(即struct map
)。我查看了Stackoverflow,发现了这个:
struct map {
int city;
struct map **link = (struct map *)malloc(204800 * sizeof(struct map *));
}
但是我收到了这个错误: -
error: expected ':', ',', ';', '}' or '__attribute__' before '=' token
struct map **link = (struct map *)malloc(204800*sizeof(struct map *));
答案 0 :(得分:5)
这是一个结构定义,你不能malloc或在声明中使用任何函数,因为声明没有被执行,它只是一种类型的结构类型' map'看起来应该是这样,编译器会知道在创建它的实例时应该为struct map分配多少内存。
当你想在struct map中使用成员时(例如使指针链接指向一些可行的内存段),你需要创建一个' map'在某个地方,只有这样你才能调用malloc并使链接指向生成的内存段。
解决这个问题的方法是首先声明结构如下:
struct map{
int city;
struct map **link;
};
当您在main中创建struct的实例时,您可以为链接分配空间,如下所示:
int main()
{
struct map *temp = malloc(sizeof(struct map));
temp->link = malloc(204800*sizeof(struct map *));
return 0;
}