返回信息流#include<stdio.h>
void fun(int *a,int *b)
{
int *c;
c=a;a=b;b=c;
}
void main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);
printf("%d%d",*p,*q);
fun(&x,&y);
printf("%d%d",*p,*q);
}
答案是3535。为什么不是5335?而稍作改动:
#include<stdio.h>
void fun(int *a,int *b)
{
int c;
c=*a;*a=*b;*b=c;
}
void main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);
printf("%d%d",*p,*q);
fun(&x,&y);
printf("%d%d",*p,*q);
}
就成了5335,再改一下:
#include<stdio.h>
void fun(int *a,int *b)
{
int *c;
c=a;a=b;b=c;
}
void main()
{
int x=3,y=5,*p=&x,*q=&y,*m;
m=p;p=q;q=m;
printf("%d%d",*p,*q);
fun(&x,&y);
printf("%d%d",*p,*q);
}
这个答案是5353。
完全不懂了。求解释。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #42953同步于 2010/8/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【求助】关于指针
xr71203
2010/8/31镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
你再试试这个吧。
void fun(int **a,int **b)
{
int *c;
c=*a;*a=*b;*b=c;
}
int main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(&p,&q);
printf("%d%d",*p,*q);
return 0;
}
void fun(int *a,int *b)
{
int *c;
c=a;a=b;b=c;
} 里面只是把指针a和b所指的指向交换,但是并没有改变变量x y里面的值。如果你不信 你可以在fun函数里面打印a b 看看他们的值是多少?
一:void fun(int *a,int *b)
{
int *c;
c=a;a=b;b=c;
}
这个函数只改变两个指针变量的指向,不改变原变量值
二:void fun(int *a,int *b)
{
int c;
c=*a;*a=*b;*b=c;
}
这个函数就直接引用并交换了变量值
三:每次第一个fun执行完以后,第二个fun的调用值受其控制