为什么输出结果都是0
#pragma warning(disable : 4996)
#include
#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
因为在执行完input函数后指针p已经指超出数组的范围了,而此时又把它返回到print函数里面了。
你这p一直在++啊,return时p已经指向数组后面的内存了