gpt4 book ai didi

c - 指针和结构问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:58 25 4
gpt4 key购买 nike

函数 find_young() 必须接收指针 p 作为实际参数。而p必须指向一个struct s,其中有最年轻的人。没有错误消息,但程序无法运行。请给我一些建议。

typedef struct
{
char *name;
int age;
} PERSON;

void find_young(PERSON **ip)
{
PERSON s[3] = {{"John", 25}, {"Brandon", 28}, {"Alex", 30}};
int i;
int min = s[0].age;
for(i = 0; i < 3; i++)
{
if(min > s[i].age)
**ip = s[i];
}
}

int main()
{
PERSON *p;
find_young(&p);
printf("The youngest person is %s.\n", p->name);
}

最佳答案

您需要对代码进行一些更改才能使其正常工作


1) 需要为struct分配内存,并为struct中的char* name分配内存

int main()
{
PERSON *p = malloc(sizeof(PERSON));
p->name = malloc(100);
find_young(&p);
printf("The youngest person is %s with age %d.\n", p->name, p->age);

free(p->name);
free(p);
}


2) 然后你需要将 nameage 值正确地复制到传递的 struct

void find_young(PERSON **ip)
{
PERSON s[3] = {{"John", 25}, {"Brandon", 28}, {"Alex", 30}};
int i;

int min = s[0].age; //copying the first value
(**ip).age = s[0].age;
strcpy((**ip).name, s[0].name);

for(i = 1; i < 3; i++) //starting from the next values to compare
{
if(min > s[i].age)
{
(**ip).age = s[i].age;
strcpy((**ip).name, s[i].name);
}
}
}

关于c - 指针和结构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33993713/

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