局部变量与全局变量的问题

来源:5-10 局部与全局

沐竹雨

2015-08-08 15:28

请问,下面的程序中怎么理解?

#include <stdio.h>
int x =1;
    int fn1(int x)
    {
    int y,z;
    z=2;
    y=x+z;
    printf("y=%d\n",y);            /*这里为什么会输出“y=4”,在上面不是定义了“x=1;”的吗?应该是3啊!虽然我懂下面的调用函数中“fn(2)”又定义了x值,但是为什么程序不使用“x=1”计算呢?*/
    return 0;
    }
    
    int main()
    {
        fn1(2);
        int y=10;
        printf("x+y=%d",x+y);   /*这里为什么x值又是按照“x=1”计算的?*/
        return 0;
    }

该程序得出的结果是

y=4

x+y=11

请大神帮忙解答!谢谢!

http://img.mukewang.com/55c5aff40001b43713660746.jpg

写回答 关注

1回答

  • 昨夜小楼泣东风
    2015-08-08 16:21:50
    已采纳

    在main()函数中先调用了fn1(2),所以此时将实参传入,得x=2,这里的x为局部变量,y=2+2=4;

    printf("x+y=%d",x+y);   这里用的x为全局变量,所以为10+1=11

    小玖so 回复昨夜小楼泣东...

    形参跟实参不是太明确,我想问问,这里fn1(2)只调用一次形参嘛?

    2015-08-24 14:54:48

    共 4 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926020 学习 · 20793 问题

查看课程

相似问题