C语言用指针法交换两个数的顺序问题
交换两个数的顺序,可以交换地址,可以交换值。当用函数调用法交换地址的时候,为什么不可以实现。程序如下:#include<stdio.h>//这是用一个主函数就交换的方法。...
交换两个数的顺序,可以交换地址,可以交换值。当用函数调用法交换地址的时候,为什么不可以实现。程序如下:
#include<stdio.h>//这是用一个主函数就交换的方法。
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<stdio.h>//这是用函数调用的方法,为什么这个方法为什么就不能实现。
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<stdio.h>//这是用一个主函数就交换的方法。
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<stdio.h>//这是用函数调用的方法,为什么这个方法为什么就不能实现。
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;}
} 展开
19个回答
展开全部
#include <stdio.h>
void swap(int *a,int *b);
int main()
{
int a,b,*x,*y;
scanf("%d %d",&a,&b);
x=&a,y=&b; //x和y分别保存a和b的地址
printf("x和y的原始地址:x = %d, y = %d\n",x,y);
swap(x,y);
printf("经过swap函数后x和y的地址:x = %d, y = %d\n",x,y);
//可以发现x和y的地址并没有改变
printf("%d %d\n",*x,*y);
}
void swap(int *x,int *y)
{
printf("函数开头x和y的地址:x = %d, y = %d\n",x,y);
int *t;
t=x; x=y; y=t;
printf("函数结尾x和y的地址:x = %d, y = %d\n",x,y);
//可以看到,x和y的地址确实是互换了,但是,这又有什么用呢?
//它在这里改变的仅仅是函数的形式参数而已。形式参数的值并不具备全局性。
}
对代码做了一点修改。只要运行一下看看效果,再看看注释,应该就能有一些自己的理解了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>////这是用函数调用的方法。
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;} //改了
}
这样就可以实现了。
因为仅改变a,b的值是不能够影响到主函数的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成*t=*a;*a=*b;*b=*t;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-01-10
展开全部
你需要理解c语言中的“值传递”
#include<stdio.h>
main(){
void swap(int *a, int *b);
int a,b,*x,*y;
scanf("%d %d",&a,&b);
printf("\n");
x=&a;
y=&b;
swap(x,y);
printf("%d %d\n",*x,*y);
}
void swap(int *a,int *b){
int t;
t=*a;
*a=*b;
*b=t;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询