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

标签 c arrays pointers struct

我目前正在尝试为学生数据库作业编写一个程序。手动设置结构数组的 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/

相关文章:

C程序——链表中的链表

c - 全局变量的意外初始化

c - 每个.h文件都有一个对应的目标文件吗?

java - 安装 libfprint 并使用 Jlibfprint 包装

java - 处理数组中的对象时出现越界

javascript - Ajax返回数组在PHP中显示[object Object],[object Object]

javascript - 使用 JS 制作宾果游戏

c++ - 从字符串转换为 char* - 传递函数指针

c - 表达式必须有指针类型错误

c - 理解字符串数组 C