这段代码怎么分析呀?


#include <stdio.h>
void sub(double a,double*pb);
int main()
{
    double x,y;
    scanf("%lf%lf",&x,&y);
    sub(x,&y);
    printf("x=%f y=%f\n",x,y);
}
void sub (double a,double*pb)
{
    a=a-*pb;
    *pb=*pb-a;
}

这个代码考察的是传址调用和传值调用的区别
sub函数中x是传值调用,y是传址调用

  • 传值调用,对a的操作不会影响主函数里面的x
  • 传值调用,对pb指针的操作会影响主函数里的y

所以printf的结果是x不变,y是原来的y-x的结果

如果对你有帮助,还请点个采纳,万分感谢!