鱼C论坛

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

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

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

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

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

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

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

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

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

                printf("\n");
        }
}


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

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

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

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

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

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

int number_of_stu = 3;

struct Student
{
        int num;
        char name[20];
        float score;
} stu[3];

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

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

                printf("\n")                           ;
        }
}


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

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

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

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

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

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

int number_of_stu = 3;

struct Student
{
        int num;
        char name[20];
        float score;
} stu[3];

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

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

                printf("\n")                           ;
        }
}


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

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

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

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

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 07:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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