#include
int x1=30,x2=40;//此时全局变量变成10;
void sub(int x,int y)
{
x1=x; //把传进来的值赋值给全局变量x1;
x=y;//这一段和下面一段不用管,形参x跟y值的改变是不改变实参x3,跟x4的值的,只要注意全局变量x1跟x2即可。
y=x1;
}
int main()
{
int x3=10,x4=20;
sub(x3,x4);//sub(10,20),进入sub函数。
sub(x2,x1);//sub(40,30)进入sub函数,把40赋值给全局变量x1,那么x1=40了;
printf("%d,%d,%d\n",x3,x4,x1,x2);//所以x3=10,x4=20,x1=40,x2少%d没输出。
return 0;
}
又是你啊。。。又在做题了?
x1 , x2 , x3, x4 4个变量
sub(x,y) 因为x,y是形参不影响原来的变量值
第一个sub得出 x1=10, 第二个sub 得出 x1=40. (因为x1是全局变量可以被sub影响,sub中没有其他变量不影响其他变量。)
所以x1 =40 其他不变
x1x2是全局变量,形参的改变会改变它的值,儿x3x4是局部变量,形参的改变不会改变它的值。建议你认真看看形参和实参。
输出的结果为 x1 = 40其他的还是原来的值,,没有改变
x3x4不能换x1x2可以,输出那少了一个%d
x1是外部变量在函数声明整个文件都适用所以能换