做算法题的时候经常会碰到二重指针,看着非常别扭,于是自己敲了一下代码来理解一下这个概念。
int main()
{
int a = 1;
int b = 2;
int*p1 = &a;
int*p2 = &b;
p2 = p1;
int**q = &p1;
printf_s("%d %d",*p2,**q);
}
- q是一个指向(指向int数据类型指针)变量p1的指针,注意括号里面的描述,p1本身又是一个指向int数据类型的指针。也就是说,q里面存放的其实是p1的地址,那么*q表示的就是p1本身。所以有**q=*p1=a=1。
- 相同类型的指针比如p1和p2是可以用等号进行赋值的,赋值的结果就是两个指针指向同一个地址。