“data”的左侧部分指定未定义的结构 / 联合“client

#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct
{
    char name[16];  //姓名
    char sex[4];    //性别
    int age;        //年龄
    char number[16];//电话号码
    char mailbox[32];//邮箱
}client;

typedef struct
{
    struct client* data; //客户数组
    //一个结构体包含另一个结构体的指针的时候
    // 不用struct client* data,直接使用client* data
    //“data”的左侧部分指定未定义的结构 / 联合“client
    //我的理解是重复定义了

    size_t size;        //当前存储的客户数量
    size_t capacity;    //可存储的客户数量总量
}myArray;

void expandArray(myArray* array, size_t newcapacity);
void InitSystem(myArray* array, size_t capacity);
void addCilent(myArray* array);

这里是自己在头文件中定义的两个结构体,其中一个结构体包含另一个结构体的结构体指针。在编写子函数的时候出现如下内容:

运行结果提示如下:

具体解决办法是把结构体定义改成如下:

#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct
{
    char name[16];  //姓名
    char sex[4];    //性别
    int age;        //年龄
    char number[16];//电话号码
    char mailbox[32];//邮箱
}client;

typedef struct
{
    client* data; //客户数组
    //一个结构体包含另一个结构体的指针的时候
    // 不用struct client* data,直接使用client* data
    //“data”的左侧部分指定未定义的结构 / 联合“client
 

    size_t size;        //当前存储的客户数量
    size_t capacity;    //可存储的客户数量总量
}myArray;

void expandArray(myArray* array, size_t newcapacity);
void InitSystem(myArray* array, size_t capacity);
void addCilent(myArray* array);

我的理解是关键字typedef已经把结构体改名为client,若再使用struct client的话,这里的client是新建的,不是上面所定义的那一个结构体cilent。

修改后,报错解除

成功运行,噢耶:

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值