MeowMoo 发表于 2021-1-12 15:14:50

关于全局变量的问题

为什么top和lowest的值会是0,我调试的时候发现子程序运行完后,top和lowest的值是对的,但是为什么回到主程序就变成0了,是不是全局变量的问题,求大佬解答
#include <stdio.h>

int top,lowest;

int main(void)
{
        double average(int b[]);
        double ave;
        int i,a;
        printf("Input 10 students' score:");
        for(i=0;i<10;i++)
        scanf("%d",&a);
        ave=average(a);
        printf("%lf\n %d\n %d\n",ave,top,lowest);
}

double average(int b[])//形参可以不定义数组大小
{
        double ave;
        int i,top=b,lowest=b;
        for(i=1,ave=b;i<10;i++)
        {
                if(top<b)
                top=b;
                else if(lowest>b)
                lowest=b;
                ave=ave+b;
        }
        ave=ave/10.0;
       
        return ave;//全局变量不用返回
}

心驰神往 发表于 2021-1-12 15:25:21

看错了

xieglt 发表于 2021-1-12 15:27:24

int i,top=b,lowest=b;

改成


int i;
top=b,lowest=b;

MeowMoo 发表于 2021-1-12 15:41:42

xieglt 发表于 2021-1-12 15:27
改成

一样的,还是错的

xieglt 发表于 2021-1-12 15:48:52

本帖最后由 xieglt 于 2021-1-12 15:50 编辑

#include <stdio.h>

int top,lowest;

int main(void)
{
        double average(int b[]);
        double ave;
        int i,a;
        printf("Input 10 students' score:");
        for(i=0;i<10;i++)
      scanf("%d",&a);
        ave=average(a);
        printf("%lf\n %d\n %d\n",ave,top,lowest);
        return 0;
}

double average(int b[])//形参可以不定义数组大小
{
        double ave;
        int i;
        top=b,lowest=b;
        for(i=1,ave=b;i<10;i++)
        {
                if(top<b)
                        top=b;
                else if(lowest>b)
                        lowest=b;
                ave=ave+b;
        }
        ave=ave/10.0;
       
        return ave;//全局变量不用返回
}


心驰神往 发表于 2021-1-12 15:54:12

MeowMoo 发表于 2021-1-12 15:41
一样的,还是错的

按楼上那样改就行了啊,不应该错啊

MeowMoo 发表于 2021-1-12 16:02:12

xieglt 发表于 2021-1-12 15:48


哦~,原来是全局变量重定义了,谢谢,但是这个问题调试的时候子函数能正常运行,而且结果也正确,意思是如果在子函数重定义,相当于这两个变量在子函数的值只在子函数有效,回主函数就会被重新赋值了,是这个意思吗?

MeowMoo 发表于 2021-1-12 16:05:12

心驰神往 发表于 2021-1-12 15:54
按楼上那样改就行了啊,不应该错啊

是的,没错了{:10_279:}

风过无痕1989 发表于 2021-1-12 23:16:46

上面已经有正确答案,我回个帖子而已
页: [1]
查看完整版本: 关于全局变量的问题