C语言用指针法交换两个数的顺序问题

学习 时间:2026-04-07 19:52:46 阅读:5336
C语言用指针法交换两个数的顺序问题交换两个数的顺序,可以交换地址,可以交换值.当用函数调用法交换地址的时候,为什么不可以实现.程序如下:#include//这是用一个主函数就交换的方法.main(){int a,b,*x,*y,*t;scanf("%d %d",&a,&b);x=&a;y=&b; {t=x;x=y;y=t;}printf("%d %d\n",*x,*y);} #include//这是用函数调用的方法,为什么这个方法为什么就不能实现.main(){int swap(int *a,int *b);int a,b,*x,*y;scanf("%d %d",&a,&b);x=&a;y=&b;swap(x,y);printf("%d %d\n",*x,*y);} int swap(int *a,int *b){int *t;{t=a;a=b;b=t;}}

最佳回答

清爽的鸡翅

端庄的小猫咪

2026-04-07 19:52:46

int swap(int *a,int *b)//a与b分别复制主函数x与y的值,即a与x的指向相同,b与y的指向相同
{
\x09int *t;
\x09{t=a;a=b;b=t;}//通过交换,a和y的指向相同,b与x的指向相同,但是,x与y没有改变原来指向,这样函数swap结束,a与b消失,输出结果不变
}
换成
int t;
{t=*a;*a=*b;*b=t;}//将改变x和y指向的地址的值,达到交换目的

最新回答共有2条回答

  • 负责的菠萝
    回复
    2026-04-07 19:52:46

    int swap(int *a,int *b)//a与b分别复制主函数x与y的值,即a与x的指向相同,b与y的指向相同{\x09int *t;\x09{t=a;a=b;b=t;}//通过交换,a和y的指向相同,b与x的指向相同,但是,x与y没有改变原来指向,这样函数swap结束,a与b消失,输出结果不变}换成int t;{t=*a;*a=*b;*b=t;}//将改变x和y指向的地址的值,达到交换目的

上一篇 两个因数相乘,积是60,如果一个因数扩大3倍,另一个因数缩小6倍,那两个数的积缩小3倍,60÷3=20有问题

下一篇 匈奴和突厥匈奴灭了后是不是就是突厥人的后代或取代人?如果不是匈奴是怎么灭的?突厥又是怎么来的?