gpt4 book ai didi

C 创建结构体指针

转载 作者:行者123 更新时间:2023-11-30 16:19:07 25 4
gpt4 key购买 nike

我试图将我的结构 Human 存储到一个数组中,同时在 for 循环中生成一个数组。我完全无助,因为我对指针相当陌生,无法让这段代码正常工作。我最大的问题是

  • 如何将此类 Human 存储在 Human 数组中
  • 如何访问 Human 的变量并使用它们

这是我当前的代码:

typedef struct {
int day;
int month;
int year;
} Date;

typedef struct {
char *name;
Date Birth_date;
} Human;

char gen_name() {
char *name[5];

name[0] = "Zoro";
name[1] = "Peter";
name[2] = "Ambrozsy";
name[3] = "Chuanita";
name[4] = "Jack";

int x = rand() % 5;

return (name[x]);
}

Human *createHuman(char *name, int day, int month, int year) {
Human *h = malloc(sizeof(Human));

h->name = name;
h->Birth_date.day = day;
h->Birth_date.month = month;
h->Birth_date.year = year;

return h;
}

void gen_Humans(Human array[], int n) {
// n == MAX
for (int i = 0; i < n; i++) {
char *name = gen_name();
int day = gen_day();
int month = gen_month();
int year = gen_year();

array[i] = *createHuman(name, day, month, year);
}
}

int main() {
Human *human_array[MAX];

gen_Humans(human_array, MAX);
printHuman(human_array, MAX);
}

最佳答案

human_array 是一个指针数组,因此您需要在 get_Humans() 中以相同的方式声明它:

void gen_Humans(Human *array[], int n)

那么您不应该取消引用 createHuman() 返回的指针:

array[i] = createHuman(name, day, month, year);

您尚未展示 printHuman(),但它也需要类似。在其中,您可以使用以下内容打印单个人类:

printf("%s %d-%02d-%02d\n", array[i]->name, array[i]->Birth_date.year, array[i]->Birth_date.month, array[i]->Birth_date.day);

关于C 创建结构体指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com