【问题标题】:pointer to a const pointer to an int指向 const 的指针 指向 int 的指针
【发布时间】:2013-05-23 18:06:08
【问题描述】:

有人能解释一下我下面的程序中的一点吗 我写了以下程序来理解 int * const * var; 的含义;

#include "iostream"

using namespace std ;

int main(){

int a = 2;

int  * const   x = &a;
int * const * p = &x;

cout << **p;
return 0;
}

这个程序的输出是 2 。

我关注的点是 p 是指向一个指向 int 的常量指针的指针,这就是我使用它的方式,但我一直研究存储指针需要指向指针的指针。那么这个程序是如何工作的。我不应该用过

int * const **P

因为这意味着 P 可能包含某个指针的地址。

我不知道为什么我的代码有效:)

【问题讨论】:

  • p 已经是一个指向指针的指针。只需看看它的声明。

标签: c++ pointers constants


【解决方案1】:
  1. int * const 是一个“const 指向 int 的指针”。
  2. int * const * 是“指向const 的指针,指向int”。

Type 2 一个指向指针的指针。更具体地说,它是一个指向 const 指针的指针。太好了,因为您要指向的指针 (x) 是 const。由于x 属于类型 1,因此获取它的地址会给您一个类型为 2 的指针。

int * const ** 将是一个“指向const 的指针的指针@ 指向int 的指针”。计算有多少“指针”。三!事实上,如果你用&amp;p 获取p 的地址,你会得到这样的结果。

【讨论】:

  • @SohamChowdhury 只需稍加练习,指针很快就会成为第二天性。我脑子里有一个小盒子,它们之间有箭头指向。
  • 但是请记住,只要看到三颗星,就该休息一天了。
  • @DanielFischer “到了第七天,上帝已经用指针指向指针;所以在第七天他休息了所有的工作。然后上帝祝福第七天,使它成为圣洁,因为在它上面,他从他所做的一切间接中休息了。” - 很确定就是这样。
【解决方案2】:
  • 要存储指针,您需要指向指针的指针

显然您认为const 指针在某种程度上不是指针。你错了。 const 只是不变性的指标。 因此指向const的指针指向指针的指针

【讨论】:

    【解决方案3】:

    x 的类型为 int* const,假设 x 的类型为 some ABC。 所以指向x 的指针被声明为ABC *p=&amp;x;

    相当于int* const *p=&amp;x;

    【讨论】:

      【解决方案4】:

      我认为这有助于直觉陈述。 将* 替换为pointer 并向后阅读语句。

      【讨论】:

        猜你喜欢
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多