小鸟游菜花 2024-03-06 19:49 采纳率: 86.5%
浏览 4
已结题

指针和二级指针的运用

第12中,指针pii和&pii有什么区别,p不是也是指该内存空间地址吗,pii和&pii难道不应该一样吗
第16行中,cout << "ppii= " << ppii结果为什么是&pii 的结果而不是pii


#include<iostream>     //包含头文件
using namespace std;   //指定缺省的命名空间

int main()
{
    //声明一个变量
    int ii = 8;
    cout << "ii= " << ii << " " << "ii的地址= " << &ii << endl;

    //声明一个指针变量,指向普通变量
    int *pii = &ii;
    cout << "pii= " << pii << " " << "pii的地址= " << &pii << " " << "pii的值= " <<*pii<< endl;

    //声明一个二级指针,指向指针变量
    int **ppii = &pii;
    cout << "ppii= " << ppii << " " << "ppii的地址= " << &ppii << " " << "*ppii= " << *ppii <<" " << "**ppii=" <<**ppii<<endl;
    
    /*
    ii = 8 ii的地址 = 0000008A6C6FFC94
    pii = 0000008A6C6FFC94 pii的地址 = 0000008A6C6FFCB8 pii的值 = 8
    ppii = 0000008A6C6FFCB8 ppii的地址 = 0000008A6C6FFCD8 ppii的值 = 0000008A6C6FFC94 **ppii=8
    */
    return 0;;
}
  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-06 19:50
    关注

    引自免费微信小程序:皆我百晓生

    在C++中,指针和二级指针是用来存储地址的变量。现在我们详细解释一下代码中的pii&pii以及ppii的区别。

    1. int ii = 8;声明了一个整型变量ii并赋值为8。

    2. int *pii = &ii;声明了一个一级指针pii,它指向了变量ii的内存地址。这里的pii就是存储了ii的地址(0000008A6C6FFC94)。

      • pii表示这个指针变量自身的值,即它所指向的地址。
      • &pii则是获取指针变量pii本身的地址(0000008A6C6FFCB8),所以pii&pii是不一样的。
    3. int **ppii = &pii;声明了一个二级指针ppii,它指向了一级指针pii的内存地址。这里的ppii存储的是pii的地址(0000008A6C6FFCB8)。

      • 当你执行cout << "ppii= " << ppii << endl;时,输出的是ppii的值,也就是一级指针pii的地址。
      • 而当你解引用*ppii时,得到的是pii本身(即ii的地址0000008A6C6FFC94)。

    总结:

    • pii 是一个一级指针,存储了变量ii的地址。
    • &pii 是一级指针pii自身的地址。
    • ppii 是一个二级指针,存储了一级指针pii的地址。
    • 当输出ppii时,显示的是它所指向的一级指针pii的地址。
    • 当进一步解引用*ppii时,会得到一级指针pii的值,即ii的地址。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月7日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题