C语言一段代码:输出的结果是什么?为什么是这样?
答案:2 悬赏:0 手机版
解决时间 2021-02-08 19:10
- 提问者网友:未信
- 2021-02-08 10:25
C语言一段代码:输出的结果是什么?为什么是这样?
最佳答案
- 五星知识达人网友:不甚了了
- 2021-02-08 10:59
在函数f(int y, int *x)这里,x,y都是形参。写成a,b也一样,没实际值。
void f(int b,int *a)
{
b=b+*a;
*a=*a+b;}在执行这个函数时,需要进行参数调用,将实参传递给形参。f(y,&x);在这里y是进行了值传递,而x进行的是引用传递。换成上面这个函数吧,避免混淆。也就是b=4,在f函数里改变b的值对y没影响,而指针a则指向了x的地址,对*a进行操作就是改变x的值。
所以y的值没变。
void f(int b,int *a)
{
b=b+*a;
*a=*a+b;}在执行这个函数时,需要进行参数调用,将实参传递给形参。f(y,&x);在这里y是进行了值传递,而x进行的是引用传递。换成上面这个函数吧,避免混淆。也就是b=4,在f函数里改变b的值对y没影响,而指针a则指向了x的地址,对*a进行操作就是改变x的值。
所以y的值没变。
全部回答
- 1楼网友:轻雾山林
- 2021-02-08 12:18
你在编译器里执行过没,你定义的两个变量都是整形的,但是函数的参数为整形的指针,确定你的编译时不报错?追问没错。。。追答哦哦,好久没看了,都忘了。“呼呼上升”这位哥们的回答没错,是他解释的那样的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯