gpt4 book ai didi

c - 结构指针数组

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:19 25 4
gpt4 key购买 nike

所以我有 3 个文件:main.c、countries.h 和 countries.c

我在 countries.h 中声明了名为“Country”的结构的指针

我已将 countries.h 包含在 countries.c 和 main.c 中

并在 countries.c 中声明结构本身

countries.h

typedef struct Country* pCountry;

countries.c

struct Country {
char *name;
pCity cities;
int numCities;
pTerritory countryTerr;
};

现在,我想使用 malloc 创建 Country 结构的指针数组

所以我这样做了:

pCountry countries_array;
countries_array = (pCountry);
malloc(num_of_countries*sizeof(countries_array));

并为每个指针分配指针,即使 malloc 似乎工作我也做不到

使用 [] 将指针分配给数组中的元素:

countries_array[0]= new_pointer;

我得到“未定义结构国家的无效使用”和“解引用不完整的指针”,

代码有什么问题?

谢谢

最佳答案

看起来不错。只需将它分配给相同类型的东西,struct Country。此外,正如评论中指出的那样,它应该是 malloc num_of_countries * sizeof struct Country (不是指针类型),现在在下面正确地取消引用为 sizeof (*countries_array) 也有效。

pCountry countries_array;
countries_array = malloc(num_of_countries * sizeof (*countries_array));
struct Country Jefferson = {"Jefferson", 1,2,3 };
countries_array[0] = Jefferson;

// don't forget to free the memory when no longer needed.
free (countries_array);

如果我们必须将一个指针放入这个结构数组中,我们可以像 countries_array[0] = *pointer 这样解引用指针,或者...我们可以将 countries_array 声明为 < em>指针,而不是结构数组。也许这就是您想要的。无论哪种方式,实际结构都必须在某处占用内存......

pCountry *countries_array = malloc(num_of_countries*sizeof countries_array);
pCountry j = &Jefferson; // `&`, "address of" operator
countries_array[0] = j; // put a `pointer` into the array...

关于c - 结构指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53421469/

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