我有这个结构
struct Patient
{
int patientNumber;
char name[20];
struct Phone* phone;
};我在这里分配数据:
int main(void)
{
struct Patient* pets[MAX_PETS] = {
{1024, "Shaggy Yanson", {"CELL","3048005191"} },
{1032, "Puglsey Yanson", {"CELL","3048005191"} },
{4040, "Beans Maulin", {"HOME","3649155831"} },
{1048, "Banjo Codi", {"TBA",{'\0'}} },
{1056, "Rover Davidov", {"WORK","7934346809"} }
};
struct ClinicData data = { pets, MAX_PETS};我收到了这些警告,不能让我继续前进。
a1m2.c:24:9: warning: braces around scalar initializer
24 | {1024, "Shaggy Yanson", {"CELL","3048005191"} },
| ^
a1m2.c:24:9: note: (near initialization for ‘pets[0]’)
a1m2.c:25:9: warning: braces around scalar initializer
25 | {1032, "Puglsey Yanson", {"CELL","3048005191"} },
| ^
a1m2.c:25:9: note: (near initialization for ‘pets[1]’)我读过这篇文章,我给病人打电话,我还试着换牙套。我真的不知道如何解决这个问题:)
发布于 2022-06-29 03:13:28
正如注释中所指出的,您不希望在声明“宠物”数组之前包括星号符号。如果要创建单个新结构并为其分配内存,则星号符号将是合适的。例如。
struct Patient *pats;
pats = (struct Patient *) malloc(sizeof(struct Patient));
pats->patientNumber = 3088; /* And so forth */这将建立一个单一结构,然后可以用适当的数据填充该结构。
在您的例子中,您实际上是在创建一个病人结构数组。因此,在这种情况下,不需要星号。
使用上面的结构定义并完成" phone“和"ClinicData”结构的定义,我编写了以下示例程序来使用您的患者结构数组以及电话号码结构和临床数据结构。我利用你的数据来设置病人数组。
#include <stdio.h>
#include <stdlib.h>
#define MAX_PETS 5
struct Phone
{
char ptype[5];
char pnumber[20];
};
struct Patient
{
int patientNumber;
char name[20];
struct Phone phone;
};
struct ClinicData
{
struct Patient *patients;
int elements;
};
int main()
{
struct Patient pets[MAX_PETS] = /* Removed the "*" as "pets" by itself is in effect a pointer */
{
{1024, "Shaggy Yanson", {"CELL","3048005191"} },
{1032, "Puglsey Yanson", {"CELL","3048005191"} },
{4040, "Beans Maulin", {"HOME","3649155831"} },
{1048, "Banjo Codi", {"TBA",{'\0'}} },
{1056, "Rover Davidov", {"WORK","7934346809"} }
};
struct ClinicData data = { pets, MAX_PETS};
for (int i = 0; i < MAX_PETS; i++)
{
printf("Here is a patient #%d: %s\n", i, data.patients[i].name); /* Dealing with structure array elements so "." is being used in lieu of "->" */
}
return 0;
}希望这能揭示一个结构数组的声明,并给你一些思考的食物。
致以问候。
https://stackoverflow.com/questions/72795013
复制相似问题