#include<stdio.h>
void fun(int *a,int *b)
{
int *k;
k=a;a=b;b=k;
}
void main()
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d %d",a,b);
}
我觉得应该是换了的啊?为什么没有换?
这仅仅是交换了fun()函数的的两个形参的指向,没有交换它们指向的地址保存的值,修改如下:
#include<stdio.h>
void fun(int *a,int *b)
{
int k; //注意这里
k=*a;*a=*b;*b=k;//注意这里
}
void main()
{
int a=3,b=6;//注意这里,x和y没有必要
fun(&a,&b);
printf("%d %d",a,b);
}
#include<stdio.h>
void fun(int *a,int *b)
{
int k; //注意这里
k=*a;*a=*b;*b=k;//注意这里
}
void main()
{
int a=3,b=6;//注意这里,x和y没有必要
fun(&a,&b);
printf("%d %d",a,b);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-10-02
这里仅仅改变了形参指针的指向,没有对实指针的指向的内容进行修改
改为
void fun(int *a,int *b)
{
int k;
k=*a;*a=*b;*b=k;
}追问
改为
void fun(int *a,int *b)
{
int k;
k=*a;*a=*b;*b=k;
}追问
哦~只是X指向了B,Y指向了A,但实际上A和B没有互换实值对不对?
追答可以这么说。。。
追问但是照你那样说指向互换了,我把输出改为*x,*y,还是输出的3,6啊?你不是说指向变了得嘛
追答互换的是形参指向内容,不是指针的指向
本回答被提问者和网友采纳第2个回答 2012-10-02
只是交换了形参指针变量的值,即改变了指针的指向。对实参无任何影响。
第3个回答 2012-10-02
你只是改变了X Y指针的指向,没有改变ab的值
第4个回答 2012-10-02
我怎么觉得你这是将a与b的储存地址转换,而不是转换他们的值啊!!