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


    今天看书《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
  • 相关阅读:
    IDEA常用快捷键和设置
    java反射总结
    IO编程总结
    3月份主要学习
    idea中maven将jar包导入本地maven库
    hive常用命令
    CentOS7 安装图形化桌面
    vue+leaflet
    Springboot + Rabbitmq + WebSocet + vue
    VUE 中引入百度地图(vue-Baidu-Map)
  • 原文地址:https://www.cnblogs.com/litifeng/p/8976307.html
Copyright © 2020-2023  润新知