2
4

5 回答 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 回答