#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。
修改后,报错解除
成功运行,噢耶: