首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告:标量初始化器周围的大括号

问警告:标量初始化器周围的大括号
EN

Stack Overflow用户
提问于 2022-06-29 02:08:08
回答 1查看 70关注 0票数 -1

我有这个结构

代码语言:javascript
复制
    struct Patient
{
    int patientNumber;
    char name[20];
    struct Phone* phone;
};

我在这里分配数据:

代码语言:javascript
复制
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};

我收到了这些警告,不能让我继续前进。

代码语言:javascript
复制
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]’)

我读过这篇文章,我给病人打电话,我还试着换牙套。我真的不知道如何解决这个问题:)

EN

回答 1

Stack Overflow用户

发布于 2022-06-29 03:13:28

正如注释中所指出的,您不希望在声明“宠物”数组之前包括星号符号。如果要创建单个新结构并为其分配内存,则星号符号将是合适的。例如。

代码语言:javascript
复制
    struct Patient *pats;

    pats = (struct Patient *) malloc(sizeof(struct Patient));

    pats->patientNumber = 3088; /* And so forth */

这将建立一个单一结构,然后可以用适当的数据填充该结构。

在您的例子中,您实际上是在创建一个病人结构数组。因此,在这种情况下,不需要星号。

使用上面的结构定义并完成" phone“和"ClinicData”结构的定义,我编写了以下示例程序来使用您的患者结构数组以及电话号码结构和临床数据结构。我利用你的数据来设置病人数组。

代码语言:javascript
复制
#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;
}

希望这能揭示一个结构数组的声明,并给你一些思考的食物。

致以问候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72795013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档