关于C的一道题

来源:百度知道 编辑:UC知道 时间:2024/04/29 12:39:52
main( )
{ int i=2 , x=5 , j=7 ;
fun(j , 6) ;
printf("i=%d , j=%d , x=%d\n" , i , j , x) ;
}
fun(int i , int j)
{ int x=7 ;
printf("i=%d , j=%d , x =%d\n", i , j , x) ;
}
运行结果:i=7,j=6,x=7

大家能不能给我解释一下,常量i=2,x=5,j=7,为什么结果是7和6呢?一定要详细,懂C的人给我发
E-mail:shanqun_26@163.com 谢谢大家了!

首先,从main()开始
int i=2,x=5,j=7;赋予初始值
fun(j,6); 调用了函数,因为j=7,所以也就是调用fun(7,6);
所以在函数里printf("i=%d,j=%d,x=%d\n",i,j,x);就是i=7,j=6,x=7
调用完后,在main()里面也有一个printf("i=%d,j=%d,x=%d\n",i, j,x);
但是函数fun()里对i=2,x=5,j=7;作出的任何改变都不会影响main()里的i,x,j
调用函数只能是单向穿导,所以总的运行结果是:
i=7,j=6,x=7
i=2,j=7,x=5
函数里的i,j和main()后面的i,j,虽然用的是相同的字母,但是代表的数字是两个并不相同,初学者容易混淆,i,j可以换成任意适当的字母,改一下比较清楚
main( )
{ int i=2 , x=5 , j=7 ;
fun(j , 6) ;
printf("i=%d , j=%d , x=%d\n" , i , j , x) ;
}
fun(int a , int b)
{ int c=7 ;
printf("a=%d , b=%d , c =%d\n", a , b , c) ;
}
运行的结果是:
a=7,b=6,c=7
i=2,j=7,x=5

main( )
{ int i=2 , x=5 , j=7 ;
fun(j , 6) ;
printf("i=%d , j=%d , x=%d\n" , i , j , x) ;
}
fun(int i , int j) */i=j=7 j=6*/
{ int x=7 ;
printf("i=%d , j=%d , x =%d\n", i , j , x) ; */i=7 j=6 x=7*