zoukankan      html  css  js  c++  java
  • 学习:c++指向指针的指针(多级间接寻址)

    前言:如今的理解 双重指针不再是指向指针的指针,指针是一个非常神奇的东西,它其实就是一个指向地址的东西,而地址是任何数据类型都必须依附的东西,所以只要内存地址存在,自己用指针就可以去获取它!

    指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。

    当一个目标值被一个指针间接指向到另一个指针时,访问这个值需要使用两个星号运算符,如下面实例所示:

    #include <iostream>
     
    using namespace std;
    
    int main ()
    {
        int var;
        int *ptr;
        int **pptr;
        var = 3000;
    
        // 获取 var 的地址
        ptr = &var;
    
        // 使用运算符 & 获取 ptr 的地址
        pptr = &ptr;
    
        // 使用 pptr 获取值
        cout << "var 值为 :" << var << endl;
        cout << "*ptr 值为:" << *ptr << endl;
        cout << "**pptr 值为:" << **pptr << endl;
        cout << "var 地址为 :" << &var << endl;
        cout << "ptr=&var 值为var的地址:" << ptr << endl;
        cout << "ptr地址为:" << &ptr << endl;
        cout << "*pptr=ptr=&var  值为var的地址:" << *pptr << endl;
        cout << "pptr 地址为:" << &pptr << endl;
        return 0;
    }
    

    当上面的代码被编译和执行时,它会产生下列结果:

    var 值为 :3000
    *ptr 值为:3000
    **pptr 值为:3000
    var 地址为 :0x7ffeec7a65e8
    ptr=&var 值为var的地址:0x7ffeec7a65e8
    ptr地址为:0x7ffeec7a65e0
    *pptr=ptr=&var  值为var的地址:0x7ffeec7a65e8
    pptr 地址为:0x7ffeec7a65d8
    

    参考文章:https://www.runoob.com/cplusplus/cpp-pointer-to-pointer.html

  • 相关阅读:
    properties文件不能输入中文
    java: bin里面的.class文件没有了怎么办
    LINUX 系统java自动化启动浏览器 提示:The driver is not executable: /home/pt/Downloads/googledriver/chromedriver_linux64/chromedriver
    MarkdownTest
    洛谷P5364 [SNOI2017]礼物 题解
    长链剖分
    左偏树(可并堆)
    Splay
    分层图最短路
    整体二分
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11881359.html
Copyright © 2011-2022 走看看