gpt4 book ai didi

c - 指向结构体数组的指针

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

我目前正在尝试为学生数据库作业编写一个程序。手动设置结构数组的 3 个元素后,接下来的 3 个学生的详细信息由用户输入。

我正在尝试编写一个函数,查找 6 个学生中最大的年龄,并将其作为索引 max 处的 Student_t 条目返回。我正在努力解决如何实际为函数提供指向数组 stdt[6] 第一个元素的指针,然后在函数中使用该指针。我也不知道如何返回到 main 具有最高年龄的条目。如果我试图说结构数组的元素的值等于某个其他整数(max),这是否意味着 max 现在是具有整数值且未链接到的其他内存块大批?因此,我不确定在函数确定最大年龄后如何返回具有最高年龄的条目。

这就是我到目前为止所写的全部内容:

#include <stdlib.h>
#include <stdio.h>

typedef struct {
char *name;
char *surname;
char *UUN;
char *department;
char gender;
int age;
}student_t;

student_t findOldest(student_t *studentarr, int len){
int i;
int x;
int max;
max=0;
for(i=0;i<len;i++){
(p+i).age=x;
if(x>max){
x=max;
}
}
}

int main() {
int i;
student_t stdt[6]={{"John","Bishop","s1234","Inf",'m',18},{"Lady","Cook","s2345","Eng",'f',21},{"James","Jackson","s33456","Eng",'m',17}};
student_t *p=&stdt[0];

for(i=3;i<6;i++) {
printf("First name: \n");
scanf("%s",stdt[i].name);
printf("Last name: \n");
scanf("%s",stdt[i].surname);
printf("UUN: \n");
scanf("%s",stdt[i].UUN);
printf("Department: \n");
scanf("%s",stdt[i].department);
printf("Gender (m/f): \n");
scanf("%c",stdt[i].gender);
printf("Age: \n");
scanf("%d",stdt[i].age);
}
findOldest(p,6);

return 0;
}

最佳答案

这应该有效。

student_t findOldest(student_t *p, int len){
int i;
student_t max = *(p+0);

for(i=1;i<len;i++)
{if((*(p+i)).age > max.age)
max = *(p+i);
}
return max;
}

您想要返回学生,因此请将学生保留在您的最大变量而不是年龄中。要引用指针,请使用

(p+i)->年龄 > 最大年龄

或使用

(*(p+i)).年龄 > 最大年龄

但是代码还存在其他问题。

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

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