gpt4 book ai didi

无法在 C 中声明指向结构内部结构的指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:56 25 4
gpt4 key购买 nike

我想在结构中有一个数组,它将存储相同数据类型的指针(即 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 *));

最佳答案

这是一个结构定义,你不能在声明中 malloc 或使用任何函数,因为声明不会被执行,它只是一种关于“map”类型的结构应该是什么样子的模板,那样当我们创建一个 struct map 的实例时,编译器会知道应该为它分配多少内存。

当你想在 struct map 中使用成员时(例如让指针链接指向某个可行的内存段)你需要在某处创建一个 'map' 的实例,只有这样你才能调用 malloc 并 make链接指向生成的内存段。

解决这个问题的方法是首先像这样声明结构:

struct map{
int city;
struct map **link;
};

当您在 main 中创建结构的实例时,您可以像这样为链接分配空间:

int main()
{
struct map *temp = malloc(sizeof(struct map));
temp->link = malloc(204800*sizeof(struct map *));
return 0;
}

关于无法在 C 中声明指向结构内部结构的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38551343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com