鱼C论坛

 找回密码
 立即注册
查看: 1135|回复: 2

[已解决]结构体数组使用,46行,报错无法将参数 1 从“Student (*)[3]”转换为“Student *[]”

[复制链接]
发表于 2020-12-27 10:11:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
“void printInfo(Student *[])”: 无法将参数 1 从“Student (*)[3]”转换为“Student *[]”       


  1. #include<winuser.inl>
  2. #include<stdio.h>
  3. #include <cstdlib>
  4. //有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。要求在main函数中赋予值,
  5. //在另一函数print中将它们输出。今用结构体变量作函数参数
  6. int number_of_stu = 3;
  7. struct Student
  8. {
  9.         int num;
  10.         char name[20];
  11.         float score;
  12. }stu[3];

  13. void printInfo(struct Student *stu[])
  14. {
  15.        
  16.         for (int i = 1; i < number_of_stu + 1; i++)
  17.         {
  18.                 printf("********print %d student information:*********\n", i);

  19.                 printf("num:%d\n", stu[i-1] -> num);
  20.                 printf("name:%s\n", stu[i-1]->name, 20);
  21.                 printf("score:%f\n", stu[i-1]->score);

  22.                 printf("\n");
  23.         }
  24. }


  25. int main()
  26. {
  27.         //输入数据
  28.         for (int i = 1; i < number_of_stu + 1; i++)
  29.         {
  30.                 printf("enter %d student number:", i );
  31.                 scanf_s("%d", stu[i-1].num);

  32.                 printf("enter %d name:", i);
  33.                 scanf_s("%s", stu[i-1].name,20);

  34.                 printf("enter %d student number:", i);
  35.                 scanf_s("%f", stu[i-1].score);
  36.         }

  37.         //将结构体作为参数传入函数中进行打印
  38.         printInfo(&stu);

  39.         return 0;
  40. }
复制代码
最佳答案
2020-12-27 12:29:26
        改好的代码
  1. #include<stdio.h>
  2. #include <cstdlib>

  3. //有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。要求在main函数中赋予值,
  4. //在另一函数print中将它们输出。今用结构体变量作函数参数

  5. int number_of_stu = 3;

  6. struct Student
  7. {
  8.         int num;
  9.         char name[20];
  10.         float score;
  11. } stu[3];

  12. void printInfo(struct Student stu[])                        // 有错
  13. {
  14.       
  15.         for (int i = 1; i < number_of_stu + 1; i++)
  16.         {
  17.                 printf("********print %d student information:*********\n", i);

  18.                 printf("num:%d\n", stu[i-1] . num)     ;    // 有错
  19.                 printf("name:%s\n", stu[i-1] . name)   ;    // 有错
  20.                 printf("score:%f\n", stu[i-1] . score) ;    // 有错

  21.                 printf("\n")                           ;
  22.         }
  23. }


  24. int main()
  25. {
  26.         //输入数据
  27.         for(int i = 1; i < number_of_stu + 1; i++) {
  28.                 printf("enter %d student number : " , i) ;
  29.                 s_scanf("%d", & stu[i-1] . num)          ; // 有错

  30.                 printf("enter %d name : " , i)           ;
  31.                 s_scanf("%s", stu[i-1] . name , 20)      ;

  32.                 printf("enter %d student score : " , i)  ;
  33.                 s_scanf("%f", & stu[i-1] . score)        ; // 有错
  34.         }

  35.         //将结构体作为参数传入函数中进行打印
  36.         printInfo(stu)                                   ; // 有错

  37.         return 0;
  38. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-27 11:07:12 From FishC Mobile | 显示全部楼层
你这不是典型的脚踩两只船嘛,数组与指针二选一即可。你定义printInfo(struct Student* stu)或者定义printInfo(struct Student stu[])
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-27 12:29:26 | 显示全部楼层    本楼为最佳答案   
        改好的代码
  1. #include<stdio.h>
  2. #include <cstdlib>

  3. //有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。要求在main函数中赋予值,
  4. //在另一函数print中将它们输出。今用结构体变量作函数参数

  5. int number_of_stu = 3;

  6. struct Student
  7. {
  8.         int num;
  9.         char name[20];
  10.         float score;
  11. } stu[3];

  12. void printInfo(struct Student stu[])                        // 有错
  13. {
  14.       
  15.         for (int i = 1; i < number_of_stu + 1; i++)
  16.         {
  17.                 printf("********print %d student information:*********\n", i);

  18.                 printf("num:%d\n", stu[i-1] . num)     ;    // 有错
  19.                 printf("name:%s\n", stu[i-1] . name)   ;    // 有错
  20.                 printf("score:%f\n", stu[i-1] . score) ;    // 有错

  21.                 printf("\n")                           ;
  22.         }
  23. }


  24. int main()
  25. {
  26.         //输入数据
  27.         for(int i = 1; i < number_of_stu + 1; i++) {
  28.                 printf("enter %d student number : " , i) ;
  29.                 s_scanf("%d", & stu[i-1] . num)          ; // 有错

  30.                 printf("enter %d name : " , i)           ;
  31.                 s_scanf("%s", stu[i-1] . name , 20)      ;

  32.                 printf("enter %d student score : " , i)  ;
  33.                 s_scanf("%f", & stu[i-1] . score)        ; // 有错
  34.         }

  35.         //将结构体作为参数传入函数中进行打印
  36.         printInfo(stu)                                   ; // 有错

  37.         return 0;
  38. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-4 05:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表