帮我解释下面的程序

1个月前

#include<stdio.h>

void fun(int *x,int*y)

{

       printf("%d %d\n",*x,*y);

       *x=3;*y=4;

}

int main()

{

       int x=1,y=2;

       fun(&y,&x);

       printf("%d %d",x,y);

       return 0;

}


https://m.teaku.com/20/1581672846615457.html

网友评论

  • 本程序主要是函数参数传递,及指针应用。①主函数中函数调用 fun(&y,&x); 实参为地址传送,void fun(int *x,int *y)接收的是(x=&y,y=&x) ,所以 printf("%d %d\n",*x,*y);输出是原y x的值,即:2 1② *x=3;*y=4;重新将3赋给x指向的单元,4赋给y指向的单元。相当于主函数的y=3,x=4.返回主函数后, printf("%d %d",x,y);输出的是4 3。

    此程序的实际输出结果正是:

  • 输出如下:

    2134

    fun函数接受2个指针,输出x和y的值,再分别赋值x为3,y为4

    望采纳