代码改变世界

C中改变指针的指向

2014-01-15 21:19  放作夥  阅读(888)  评论(0编辑  收藏  举报

交换两个指针的指向若用函数调用来实现的话必须用到二级指针,因为参数传递是值传递,相当于只把两个指针副本的指向交换了一下,而c++中有引用,相当于按址传递,比c方便.若不用函数的话

一级指针也可以.

1、一级指针

#include <stdio.h>
int main(){
 

 int a,b;
 int *p1=&a,*p2=&b;
 printf("%p\t%p\n",p1,p2);
 int *tmp;
 tmp=p1;
 p1=p2;
 p2=tmp;
 printf("%p\t%p\n",p1,p2);


 return 0;
}

2、二级指针

#include <stdio.h>

void swap(int**x,int**y){
int* temp;
temp = *x;
*x = *y;
*y = temp;
}
int main(int argc, char* argv[])
{
int a = 8;
int b = 88;

int* p = &a;
int* q = &b;

int** pp = &p;
int** qq = &q;


printf("&a=%p\n",p);
printf("&b=%p\n",q);

swap(pp,qq);
printf("&a=%p\n",p);
printf("&b=%p\n",q);

return 0;
}