对解引用符合*的深刻理解及二级指针

今天看书《C++高级语言程序设计》(徐惠民)的书中关于指针的指针作为函数的参数一节,对指针有了更深层次的感悟,记录。

要点1:解引用符*的作用,把它放在一个地址的左边,可以取得这个地址内存放的值。

要点2:指针就是存放地址的变量,可以简单的理解为:指针就是一个地址。

要点3: int a=10; int *pa=&a; 如何理解?假如:a的地址为0x2000,那么指针pa内存放的值为0x2000,但指针本身的地址并不是这个,假设为指针pa的地址为0x1000。如果我想获得a内存放的值,也就是0x2000内存放的值,那么我根据要点1,得出: *0x2000 ,当然这么写你会的到一个语法错误,因为你提前并不指定a会存到那个地址,我们要获得地址,必须使用取地址符号&,也就是&a来获得a的地址。那么,我获得a的地址就变成 *&a ,这样写是完全正确的。那么,指针pa的地址,也可以用&获得 &pa ,最后:

&pa     //获得指针pa的地址
*&pa    //获得pa内存放的值,也是一个地址
**&pa   //获得pa存放的地址内的值,也就是pa指向的地址的值
**&pa和*pa的计算结果相同,观察下面的计算:
[vagrant@bio ~]$ cat t1.cpp
#include <cstdio>
int main(int argc, char *argv[])
{
        int a=10,*pa=&a;
        printf("a=%d,*pa=%d,**&pa=%d
",a,*pa,**&pa);
        return 0;
}
[vagrant@bio ~]$ ./t1
a=10,*pa=10,**&pa=10
原文地址:https://www.cnblogs.com/litifeng/p/8976307.html