作业帮 > 综合 > 作业

int k=0;void fun(int m){m+=k;k+=m;printf("m=%d k=%d",m,k++);

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/12 06:18:11
int k=0;void fun(int m){m+=k;k+=m;printf("m=%d k=%d",m,k++);} main(){int i=4;fun(i++);printf("i=%d
int k=0;
void fun(int m)
{
m+=k;k+=m;printf("m=%d k=%d",m,k++);
}
main()
{
int i=4;
fun(i++);printf("i=%d k=%d\n",i,k)
运行结果是
m=4 k=4 i=5 k=5
求详 我想问的是一开始int k=0 ,k不就是全局变量了吗,在fun()中改变k的值只不过是改变了形参的值,为什么最后k=5,而不是k=0?
全局变量指的是无论此变量在任何位置他的初始值为你开始设置的值,不是说你对他做运算还是原来的值.你的全局变量概念有错.此程序很明显k在不断累加的.
再问: 那形参的值不是最后没有传到实参中,还是有点不懂啊
再答: 形参的值肯定传到实参了啊,否则K值怎么会变?int k=0的意思是K的初始值是0,但是不代表k=k+m的后K的值还是0,这么说你懂了么?
再问: 你说的后面我懂,不过这fun()没有最后return(),形参的值怎么传到实参的啊,我认为只有return()才能传到实参,还是有点困惑,请教一下?谢谢
再答: 不是的,return是返回一个值不是传值,例如K=0,return k就是0;
再问: 对啊,没有return值不是没有返回吗