我有一个二维数组列表:
float a[][9] = { ... }
float b[][9] = { ... }
float c[][9] = { ... }
我想要另一个指向每个二维数组的指针数组,如下所示:
what_should_be_here?? arr[] = { a, b, c }
如何实现?
最佳答案
使用typedef
来简化声明。 arr 的每个元素都是float (*)[9]
。假设此类型是 SomeType
。然后 {a,b,c}
意味着您需要一个包含三个 SomeType
类型元素的数组。
SomeType arr[] = {a,b,c};
现在的问题是,什么是SomeType
?所以给你:
typedef float (*SomeType)[9]; //SomeType is a typedef of `float (*)[9]`
SomeType arr[] = {a,b,c}; //this will compile fine now!
正如我所说,使用 typedef
来简化声明!
我会为 SomeType
选择一个更好的名字:
typedef float (*PointerToArrayOf9Float)[9];
PointerToArrayOf9Float arr[] = {a,b,c};
这是一个较长的名称,但它使代码可读!
请注意,如果没有 typedef,您的代码将如下所示:
float (*arr[])[9] = {a,b,c};
这是丑陋的。这就是为什么我要重复:
使用typedef
来简化声明!
希望对您有所帮助。
关于c++ - 如何声明指向二维数组的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14515830/