新手C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 11:09:21
fun(int x, int y)
{ static int m=0,i=2;
i+=m+1; m=i+x+y; return m;
}
main()
{ int j=1, m=1,k;
k=fun(j,m);printf("%d,"k;);
k=fun(j,m);printf("%d\n",k);
}
答案说函数形参x的值为1,y也为1 为什么?

在C语言里,函数参数之间传递参数是传值调用!!也就是调用函数只是把值传给被调用函数,调用函数的参数叫实参,如j,m,被调用函数的参数叫形参,如x,y。在执行函数fun的时候,系统另开辟了两块内存给x,y,然后把j,m的值传给他们,等调用结束了,x,y的内存也就释放了。既然是不同的内存,自然形参无法改变实参的值了,如需改变请用指针,或者用c++中的引用。

调用函数 fun(j,m); 并不会影响 j ,m 在main里的值,因为他只是形参 -,-

在调用函数里主掉函数要向被掉函数形参赋值如此题main要向fun形参(x,y)一一对应赋值所以x=1,y=1;各个函数之间的变量是没有关联的如此题main中的变量m与fun中的变量m就没有联系是独立的此题中还用到了static静态变量那么fun函数的m=0,i=2;在每次掉用fun时mi的初值都不变02;