函数会的来吧

来源:百度知道 编辑:UC知道 时间:2024/05/15 14:16:45
int i=0;

fun2(int i)
{
i=i<=2?5:0;
printf("%d\n",i);
return(i);
}
main()
{ int i=5;
fun2(i/2);printf("i=%d\n",i);
fun2(i=i/2);printf("i=%d\n",i);

}
运行结果是
5
i=5
5
i=2
第二次经过fun2函数的返回值怎么变成2啦?
在里面的printf显示的还是5,出来这么就成i=2啊?

还有第二次使用fun函数的时候,实参是一个赋值语句i=i/2;
第二次实参送进去的值是哪个的值啊?
书上写的实参必须是个有确定值的东西,但这个是赋值语句,估计是这的问题。但是怎么理解呢?

函数调用并不改变i的值,函数里面是什么内容都无关,你可以fun2(i){}定义一个空函数,那么主程序就相当于如下:
int i=5;
printf("i=%d\n",i);输出5
i=i/2;
printf("i=%d\n",i);输出2

参数副本问题

这样改可以改变

#include<stdio.h>

int i=0;

fun2(int *i)
{
*i=*i<=2?5:0;
printf("%d\n",*i);
return(*i);
}
main()
{
int i=5,b;
b = i/2;
fun2(&b);printf("i=%d\n",i);
i = i/2;
fun2(&i);printf("i=%d\n",i);

}