如何声明指向数组指针的指针?
How do I declare a pointer to a pointer to an array?
我有一个指向t数组的指针:
T (*anArray)[]; // A pointer to an array of Ts.
如何声明一个指向t数组指针的指针?(即。指向上面的指针)
:
T (**anArray)[];
或
T *(*anArray)[];
或
T (*anArray)*[];
还是其他完全不同的东西?
谢谢,阿尔法
第一个- T(**anArray)[];
你的问题的答案是,括号外的额外指针应用于数组中包含的类型,而在括号内,它们应用于变量本身的类型:
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
但是最好的建议是避免这个问题,使用typedefs:
typedef int array_t[10];
array_t **variable; // pointer to pointer to array of 10 integers
T *(*anArray)[];
-> anArray
是指向T指针数组的指针
T (**anArray)[];
-> anArray
是指向数组T的指针
打开cdecl.org,然后将以下内容复制粘贴到文本框中:
-
declare a as pointer to pointer to array 10 of int
在粘贴时,它会告诉你它在c++中的含义。它是:
-
int (**a)[10]
我肯定这就是你想要的?多玩一下这个链接。你会学到更多的语法,以及如何用单词来表达。
弄清楚如何做出像这样不寻常的指针组合的好方法如下:从变量名开始,向右看而不越过括号,向左看,重复。按照你看到的先后顺序说出你看到的。
对于指向数组指针的指针,我们有
int (**a)[5]
从a开始。我们向右看,但是那里有父元素,所以向左看。我们看到"*"
,它是一个指针。现在我们再次向右看……仍然是父母,所以回到左边。另一个"*"
,所以它是指向指针的指针。右看,父括号,左看,父括号,现在我们可以跳出括号了。现在我们看到括号,所以我们有一个指针指向指向数组的指针。最后,看所有的方式到左边,我们看到int
。指向int
数组的指针
相关文章:
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- C++,指针数组,指向双链表中的条目
- 在C++中,如何初始化指向wchar_t*的指针数组(生成wchar_t**)
- C++从函数指针数组调用函数
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 将链表转换为指针数组时出错
- C++ 对象指针数组的复制构造函数
- C++ - 循环访问指针数组会导致错误
- 删除指针数组 (C++) 中的元素
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将函数指针数组中的函数指针作为模板参数传递
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 具有推导参数的模板函数指针数组变量
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- 如何在C++中复制指针数组的数据
- 初始化类中的指针数组,并在另一个类中检索它
- 尽管直接设置了指针数组,但仍为空