问题遇到的现象和发生背景
为什么输出结果都是0
用代码块功能插入代码,请勿粘贴截图
#pragma warning(disable : 4996)
#include<stdio.h>
#define N 5
struct Student
{
long num;
char name[20];
int score[3];
}st[N];
int main()
{
struct Student* input(struct Student* p);
void print(struct Student* pt);
print(input(st)); //为什么这样写不行?结果输出错误
return 0;
}
struct Student* input(struct Student* p)
{
int i;
for (i = 0; i < N; i++, p++)
{
printf("enter the data for the %dth student\n", i + 1);
scanf("%ld %s %d %d %d", &p->num, p->name, &p->score[0], &p->score[1], &p->score[2]);
printf("\n");
}
return p;
}
void print(struct Student* pt)
{
int i;
for (i = 0; i < N; i++, pt++)
{
printf("num:%ld\tname:%s\tscore:%d\t%d\t%d\n", pt->num, pt->name, pt->score[0], pt->score[1], pt->score[2]);
}
}
运行结果及报错内容
enter the data for the 1th student
101 Li 90 79 89
enter the data for the 2th student
102 Ma 97 90 68
enter the data for the 3th student
103 Wang 77 70 78
enter the data for the 4th student
104 Fun 67 89 56
enter the data for the 5th student
105 Xue 87 65 69
num:0 name: score:0 0 0
num:0 name: score:0 0 0
num:0 name: score:0 0 0
num:0 name: score:0 0 0
num:0 name: score:0 0 0