风犬少年的猫 2022-04-19 09:11 采纳率: 86.7%
浏览 28
已结题

为啥结果是427#416

#include<stdio.h>
int x,y,z;
void p(int *x,int y)
{
--*x;
y++;
z=*x+y;
}
int main()
{
x=5;
y=2;
z=0;
p(&x,y);
printf("%d,%d,%d#",x,y,z);
p(&y,x);
printf("%d,%d,%d",x,y,z);
return 0;
}

  • 写回答

2条回答 默认 最新

  • 不会长胖的斜杠 新星创作者: 后端开发技术领域 2022-04-19 09:32
    关注

    记住一个原则,参数传递时,如果传递的是地址(带&),在函数里面值会被修改,如果传递的是值(不带&),那就值不会被修改
    所以p(&x,y); x的值被修改为4,y的值不变,z的值编程7
    p(&y,x);y被修改为1,x是4不会被改变,z变成6

    望采纳!谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月19日
  • 已采纳回答 4月19日
  • 创建了问题 4月19日