指向指针的指针

时间:2011-01-11 09:18:07

标签: c++ pointers

  

可能重复:
  Uses for multiple levels of pointer dereferences?

我正在阅读另一篇文章,这让我想到了这个问题。这会是什么意思?还有人用一个指向指向指针的指针的指针有多深......我理解指向指针的指针,但为什么你会在那之后更多地去?你有多深入使用****?

Foo(SomePtr ***你好);

6 个答案:

答案 0 :(得分:10)

您可以将整数的3维数组称为int *** intArray;

答案 1 :(得分:7)

在C ++中很少见。

在C中它可能会显示在哪里:

  • 你使用结构的“对象”,你总是传递它们或在堆上创建它们作为指针。
  • 你有这样的指针的集合,如动态分配的数组,因此T **,其中T是类型。
  • 你想得到一个数组,所以你传入一个T ***,它用T **(T *指针数组)填充你的指针。

这将是有效的C,但在C ++中:

  • 第一步是一样的。您仍然在堆上分配对象并指向它们。
  • 第二部分会因使用vector而不是数组而有所不同。
  • 第3部分会因为使用引用而不是指针而有所不同。因此,您可以通过传递vector<T*>&(或vector<shared_ptr<T> >&而不是T ***
  • 来获取向量

答案 2 :(得分:4)

好吧,如果你的函数需要修改指针的指针......;)

请参阅http://c2.com/cgi/wiki?ThreeStarProgrammer进行讨论。

答案 3 :(得分:2)

指向动态数组指针的指针可能?对我有意义。

答案 4 :(得分:0)

我永远不会超越'指针指针' - 我想如果你有必要,那么你的设计根本就会出现问题。

答案 5 :(得分:0)

我认为其根本原因在于“计算机科学中的所有问题都可以通过更多层次的间接解决”。 http://www.c2.com/cgi/wiki?OneMoreLevelOfIndirection

通常需要添加间接级别来调用子类方法或直接访问子类元素。指向指向指针的指针没有这样的限制。