C语言试题,实参形参有点不懂....
例:intk=0;voidfun(intm){m+=k;k+=m;printf("%d%d",m,k);}main(){inti=4;fun(i++);printf("%...
例:
int k=0;
void fun(int m)
{
m+=k;k+=m;
printf("%d %d",m,k);
}
main()
{
int i=4;
fun(i++);
printf("%d %d",i,k);
}
结果是 4 4 5 5 不懂为什么形参的值可以改变实参,而且不是指针!
是否符全局变量 k有关吗!
额 不好意思 第五行是printf("%d %d",m,k++); 展开
int k=0;
void fun(int m)
{
m+=k;k+=m;
printf("%d %d",m,k);
}
main()
{
int i=4;
fun(i++);
printf("%d %d",i,k);
}
结果是 4 4 5 5 不懂为什么形参的值可以改变实参,而且不是指针!
是否符全局变量 k有关吗!
额 不好意思 第五行是printf("%d %d",m,k++); 展开
4个回答
展开全部
因为传参的时候有i++,这时更改的i是在main函数的那个i,所以i变成了5
k是全局变量,只有一分拷贝,所有函数对它进行更改都可以改变它本身的值。在fun函数中对它的任何更改,在其他它被调用的地方也会有作用,它们是同一个变量。所以main中的k会有4这个值。
另外,即使是k++,打印的也是4,如果是++k就打印5。
k是全局变量,只有一分拷贝,所有函数对它进行更改都可以改变它本身的值。在fun函数中对它的任何更改,在其他它被调用的地方也会有作用,它们是同一个变量。所以main中的k会有4这个值。
另外,即使是k++,打印的也是4,如果是++k就打印5。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
跟k无关;形参在没有指针的调用的情况下是改变不了实参即main函数里的值得;
形参的值在自定义函数中作用完后即会释放存储单元。
而你给的例子中,应先弄清i++和++i在用其他运算符是的不同
这道题是先将4传递给形参;然后在自定义函数中运行printf所以都是4
而主函数中再运行i++;i++即i=i+1;是会改变i的值得;所以i变成了5,输出就是5;
你可以试着将i++换成++i在运行;会发现结果是5555
形参的值在自定义函数中作用完后即会释放存储单元。
而你给的例子中,应先弄清i++和++i在用其他运算符是的不同
这道题是先将4传递给形参;然后在自定义函数中运行printf所以都是4
而主函数中再运行i++;i++即i=i+1;是会改变i的值得;所以i变成了5,输出就是5;
你可以试着将i++换成++i在运行;会发现结果是5555
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么我的是 4 4 5 4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询