看下面来看个例子: 交换a,b的值
#include <stdio.h>
void main()
{
void firstExange(int **a, int **b);
int c=3,d=4;
int *p = &c;
int *q = &d;
firstExange(&p,&q);
printf("c=%d,d=%d ",c,d);
printf("*p=%d,*q=%d\n",*p,*q);
}
void firstExange(int *a, int *b)
{
int *temp;
temp = a;
a = b;
b=temp;
}
输出结果是a=3,b=4 *p=3,*q=4;
我们可能会任务通过传递指针,是改变值的方式的,但是注意firstExange 函数里面,交换了指针,但是交换完之后就会释放掉,就想值传递一样,直接交换p,q是行不通的
如果我们想交换p、q指针的指向,就得“更上一层楼”,相当于把p和q当成一个“值”,去用指向他们这两个变量的指针来帮助他们完成交换。
#include <stdio.h>
void main()
{
void firstExange(int **a, int **b);
int c=3,d=4;
int *p = &c;
int *q = &d;
firstExange(&p,&q);
printf("%d,%d\n",c,d);
printf("pq %d,%d\n",*p,*q);
}
void firstExange(int **a, int **b)
{
int *temp;
temp = *a;
*a = *b;
*b=temp;
}
输出结果是a=3,b=4 *p=4,*q=3; (注意:a,b的值木有变,因为没有去变过它,我们这里只是交换了p,q存放的值,这样*p,*q的转向就改变了)
这样就能体会到了,为神马会有指针的指针这个东东了吧