【发布时间】:2019-09-16 21:58:26
【问题描述】:
我现在在一个使用 C 的班级,我的一个作业要求我使用我的教授为我们编写的结构。它实际上是两个结构体,一个结构体基本上包含第一个结构体的数组。
这是他们的样子:
typedef struct cityStruct
{
unsigned int zip;
char *town
} city;
typedef struct zipTownsStruct
{
int *towns;
city **zips;
city *cities
} zipTowns;
这是我为zipTowns 结构分配内存的函数:
void getArrs(zipTowns *arrs, int size)
{
arrs->towns = malloc(sizeof(int) * size);
arrs->zips = malloc(sizeof(city **) * size);
arrs->cities = malloc(sizeof(city *) * size);
}
据我了解,我在这里所做的是根据大小变量为一定数量的ints、city 指针和city 结构分配内存空间。我知道这基本上就是数组。
我无法理解如何访问这些数组并操作其中的项目。写这个给我一个错误:
strcpy(arrs.cities[0]->town, "testTown\0");
你可以在这里看到我想要做什么。我想通过索引访问zipTowns 结构中的每个“城市”并插入一个值。
如何访问这些动态分配的结构数组中的项目?
【问题讨论】:
-
错误说明了什么? IOW,
cities是数组 os 结构还是指针数组? -
请注意您的
int * towns分配sizeof(int) * size,而不是sizeof(int*) * size。您的分配指针算术被其他两个字段的一个引用关闭;你的city * * zips应该分配sizeof(city * ) * size而你的city * cities应该分配sizeof(city) * size。 -
我想课堂练习的目的是教你如何使用指针。如果您无法跟随您的教练,请在线搜索有关它们的好教程
标签: c arrays pointers memory struct