指针作为函数参数不会改变指针的值,所以不能用指针交换值?
#include <stdio.h>#include <stdlib.h>
void swap(int *p[])
{
int *temp;
temp=p[0];
p[0]=p[1];
p[1]=temp;
}
main()
{
int a=10,b=20,*p[2]={&a,&b};
printf("%d,%d\n",*p[0],*p[1]);
swap(p);
printf("%d,%d\n",*p[0],*p[1]);
}
这个用指针数组做参数的与下面用两个指针做参数的有什么不同,为什么这个指针数组中的两个指针指向交换了,而下面的两个指针本身的指向没有交换?在这个过程中a、b的值没有交换我明白,这不都是地址传递吗?先谢了
#include <stdio.h>
#include <stdlib.h>
void swap(int *p1,int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
main()
{
int a=10,b=20,*p1,*p2;
p1=&a;
p2=&b;
printf("%d,%d\n",*p1,*p2);
swap(p1,p2);
printf("%d,%d\n",*p1,*p2);
}