none
关于C++一级指针和二级指针的疑惑 RRS feed

  • 问题

  • 书上的定义写道:一级指针代表指向值的的地址

    我有这样一个疑惑。

    结构

    struct antarctica_years_end
    {
    	int year;
    };

    main中

    antarctica_years_end s01, s02, s03;
    const antarctica_years_end* arp[3] = { &s01, &s02, &s03 }; 
    const antarctica_years_end** ppa = arp;

    结构体定义了三个结构变量,然后定义了一个指针数组存放上述变量的地址。

    最后将该数组的地址赋给变量。

    我的疑惑是,既然数组的地址也是要存放在一个空间里也有地址,那么为什么不能直接用一级指针存放?

    const antarctica_years_end* ppa = arp;

    毕竟存放值的地址和存放值为指针的地址,都是地址不是吗?

    指针存放地址也没问题吧?

    是因为一级指针只能存放值的地址,而不能存放指针的地址吗?



    2021年4月8日 13:46

全部回复

  • 你好,

    感谢您在MSDN中文论坛发帖提问。

    一级指针就是指向普通对象的指针,就是内存地址,二级指针就是指向指针的指针,就是地址的地址。

    这里我们需要区分数组指针和指针数组:

    数组指针只是一个指针变量,它占有内存中一个指针的存储空间。
    指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。

    const antarctica_years_end* arp[3]表示的是一个一维数组内存放着三个指针变量。所以在这里我们需要使用二级指针。

    Best Regards,

    Jeanine


    "Visual c++" forum will be migrating to a new home on Microsoft Q&A !
    We invite you to post new questions in the "Developing Universal Windows apps" forum’s new home on Microsoft Q&A !
    For more information, please refer to the sticky post.

    2021年4月9日 7:10
    版主