问问题
2126 次
5 回答
7
我有一个也是数组的结构
虽然没有“结构也是数组”这样的东西,但您可以制作一个结构数组。您应该首先解开变量的typedef
和声明struct
,如下所示:
typedef struct {
char lastName[20];
char firstName[20];
int age;
} PERSON;
PERSON person[10];
现在您可以将PERSON
其用作类型的名称、声明 type 的变量PERSON
、创建指向它们的指针、传递数组等等,就好像它是一个内置类型的值,例如int
:
void displayArray(PERSON pPerson[], int count) {
int i = 0;
printf("Last Name First Name Age\n");
while (i < count){
printf("%s %s %d\n",
pPerson[i].lastName,
pPerson[i].lastName,
pPerson[i].age);
i++;
}
}
于 2012-10-09T14:07:51.370 回答
0
*个人[]; 这是你真的想要用户还是你想要这样的东西: typedef PERSON *PPERSON;
于 2012-10-09T14:32:35.560 回答
0
大致写成:** 随便 = * 随便[10]
所以你可能只想要 *PPerson
于 2012-10-09T14:05:24.200 回答
0
数组可以作为指针传递给函数,因此不要尝试作为指向数组的指针传递(顺便说一下,现在PPERSON
定义为指针数组,这不是您所拥有的),只需将数组传递为 -是,并制作PPERSON
一个普通的指针(即typedef struct tagdata *PPERSON;
)。
然后您可以在函数中使用“指针”作为普通数组。
于 2012-10-09T14:06:17.287 回答
0
您应该传递一个 void 指针并将其强制转换为 PERSON[10]。
如您所见,您没有将指针传递给 PERSON 结构,而是将指针传递给本身包含该结构的数组。他们不相等。
要使其正常工作,请传递一个 void 指针和一个整数,说明数组中的元素数。当您收到它时,它将帮助您避免读取超出其分配内存的数组。
于 2012-10-09T14:04:14.600 回答