如何声明指向数组的指针?

时间:2011-08-26 17:30:34

标签: c++ pointers

我有一个指向Ts:

数组的指针
T (*anArray)[]; // A pointer to an array of Ts.

如何声明指向Ts数组的指针? (即指向上面的指针。)

是吗:

T (**anArray)[];

T *(*anArray)[];

T (*anArray)*[];

或其他完全不同的东西?

谢谢,

阿尔夫

5 个答案:

答案 0 :(得分:3)

第一个 - T(**anArray)[];

答案 1 :(得分:1)

T *(*anArray)[]; - > anArray是指向T指针数组的指针

T (**anArray)[]; - > anArray是指向T

数组的指针

答案 2 :(得分:1)

你的问题的答案是括号外的额外指针应用于数组中包含的类型,而在括号内它们应用于变量本身的类型:

int (*array)[10];  // pointer to array of 10 int
int *(*array)[10]; // pointer to array of 10 pointer to int
int (**array)[10]; // pointer to pointer to array of 10 int

但最好的建议是避免这个问题并使用typedef:

typedef int array_t[10];
array_t **variable;      // pointer to pointer to array of 10 integers

答案 3 :(得分:0)

打开cdecl.org,然后将以下内容复制粘贴到文本框中:

  • declare a as pointer to pointer to array 10 of int

在粘贴时,它告诉你它在C ++中意味着什么。好吧就是这样:

  • int (**a)[10]

我确定你正在寻找的是什么?更多地使用链接。您将学习更多语法,以及如何用文字表达。

答案 4 :(得分:0)

一个很好的方法来弄清楚如何制作这样的指针的异常组合如下:从变量名开始,向右看,不要越过括号,向左看,重复。按照您看到的顺序说出您所看到的内容。

对于指向数组指针的指针,我们有

int (**a)[5]

从一个开始。我们看起来正确,但那里有一个paren,所以向左看。好的,我们看到"*",所以它是一个指针。现在我们再次向右看...仍然是一个paren,所以回到左边。另一个"*",所以它是指向指针的指针。看吧,帕伦,向左看,帕伦,所以现在我们可以跳出括号。现在我们看到括号,所以我们有一个指向数组的指针。最后,一直向左看,我们看到int。指向指向int s。

数组的指针的指针