C语言用指针法交换两个数的顺序问题
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/17 21:52:47
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;}
}
交换两个数的顺序,可以交换地址,可以交换值.当用函数调用法交换地址的时候,为什么不可以实现.程序如下:
#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;}
}
![C语言用指针法交换两个数的顺序问题](/uploads/image/z/5174133-69-3.jpg?t=C%E8%AF%AD%E8%A8%80%E7%94%A8%E6%8C%87%E9%92%88%E6%B3%95%E4%BA%A4%E6%8D%A2%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%9A%84%E9%A1%BA%E5%BA%8F%E9%97%AE%E9%A2%98)
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指向的地址的值,达到交换目的
{
\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指向的地址的值,达到交换目的