C语言~ 不明白

来源:百度知道 编辑:UC知道 时间:2024/09/22 10:37:29
#include "stdio.h"
void fun(int *a,int *b)
{ int *c;
c=a;=a=b;b=c;
printf("%d%d",*a,*b);
}
main()
int *p,*q;
{int x=3,y=5,p=&x,p=&y;
fun(p,q);printf("%d%d",*p,*q);
fun (&x,&y);printf("%d%d",*p,*q);
}
为什么输出5,3,3,5,5,3,3,5?

#include "stdio.h"
void fun(int *a,int *b)
{ int *c;
*c=*a;*a=*b;*b=*c;
printf("%d%d",*a,*b);
}
main()
int *p,*q;
{int x=3,y=5,p=&x,p=&y;
fun(p,q);printf("%d%d",*p,*q);
fun (&x,&y);printf("%d%d",*p,*q);
}
为什么输出5,3,5,3,5,3,5,3?
可否讲的详细一点?谢谢了~~

第一个程序 c=a;=a=b;b=c; \ =a=b ; 出错
还有 你把p=&x,p=&y; 这是你的本意么? 应该
是p=&x,q=&y;才是你的本意吧 呵呵 ~~
如果是 p=&x,q=&y
那第一个程序应该是:
先看 1.

#include "stdio.h"
void fun(int *a,int *b)
{ int *c;
c=a;a=b;b=c; \ 2. 所以a,b就是&x,&y,c=a;a=b;b=c; 这句话的意 思就是把a,b里放的地址交换,则a指向了y,b指向了x;
printf("%d%d",*a,*b); \则打印出来的值是 5 3(看下面3.)
}
main()
int *p,*q;
{int x=3,y=5,p=&x,q=&y; \ 1. 此时你把p,q分别指向了x,y地址
\也是就是p,q放着x,y的地址
fun(p,q);printf("%d%d",*p,*q); \函数fun传递了p,q (看上面 2.)
\3. fun调用完后,打印*p,*q值是 3,5!! 惊~!为什么没交换?是不是,
很疑惑啊,看下面解释。
fun (&x,&y);printf("%d%d",*p,*q);
}
看这个函数:
#include<stdio.h>
void fun(x,y)
{
int c;
c=x;x=y;y=c;
}
main()
{
int x=3,y=5;
fun();
printf("\n %d %d &