c语言指针交换

来源:百度知道 编辑:UC知道 时间:2024/06/18 05:41:55
程序1:
void swap(int *a,int *b)
{ int *t;
t=a;a=b;b=t;}
main()
{ int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d %d",*p,*q);
}
程序2:
int main()
{int i1=10.i2=20,*p,*p1,*p2;
p1=&i1;p2=&i2;
p=p1;p1=p2;p2=p;
printf("i1=%d,*p1=%d,i1=%d,*p2=%d",i1,*p1,i2,*p2);
}
程序1的答案是3,5
程序2的答案是i1=10,*p1=20,i2=20,*p2=10
程序1中交换了形参的地址,而形参的地址不能传回给实参指针
但是在程序二中,为什么形参的地址又传回给实参了呢

程序二又没调用其它的函数,一直都是你所谓的"实参"---p1,p2在运算,没有形参.当然结果是p1,p2的值互换了.

...,程序2根本没有调用函数(非main函数),何来形参、实参?