下面这道C语言程序怎么理解啊 😭

下面的这个程序题为什么运行结果是10,20,40,40呢:

#include<stdio.h>
int x1=30,x2=40;
main()
{
int sub(int x,int y);
int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf("%d,%d,%d,%d\n",x3,x4,x1,x2);
}
sub(int x,int y)
{
x1=x;
x=y;
y=x1;
}

首先,通过sub函数调用,并不能改变形参的值。
但是全局变量x1和x2的值,会因在调用中的改变,而保留下来。
第一次的调用,不会改变x3与x4的值。(x3把10传递给x,x4把20传递给y,在调用中形参x把10赋值给全局变量x1)
同样,第二次的调用,也不会改变x2的值。
实参x2把40传递给形参x,实参x1把10传递给形参y,在调用中形参x把40赋值给全局变量x1。
所以,二次调用结束后的输出是:
10,20,40,40
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-21
因为你定义的sub函数里的x和y只在sub函数里起作用。举个例子,当程序执行sub(x1,x2);这条语句时就调用了sub函数。sub函数接受到x1和x2后,开辟了x1和x2两个存储块,sub函数执行完程序后,x1和x2两个存储块都会因为程序结束被抹去,不会返回给主函数。所以你看到的结果还是原来的结果。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网