Lansional 2022-11-27 14:15 采纳率: 91.5%
浏览 0
已结题

输出后的结果为什么是0

问题遇到的现象和发生背景

为什么输出结果都是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

  • 写回答

3条回答 默认 最新

  • hello_world&& 2022-11-27 14:31
    关注

    因为在执行完input函数后指针p已经指超出数组的范围了,而此时又把它返回到print函数里面了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月5日
  • 已采纳回答 11月27日
  • 创建了问题 11月27日

悬赏问题

  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢