c++ - 如何声明指向二维数组的指针数组

标签 c++ arrays pointers multidimensional-array

我有一个二维数组列表:

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/

相关文章:

c++ - std::atomic 到什么程度?

c++ - 使用 clang 共享库中的额外模块名称符号

PHP合并两个多维数组

c++ - 原始指针在 vector<T> 中工作,而 unique_prt 不工作

c - 指针的按位算术是否定义了行为?

c++ - 二维矩阵是指针数组吗?

c++ - 如何将子进程的标准输出(stderr)重定向到 winapi 中的套接字?

c++ - 混合架构?

c# - 正确复制其中包含(字节)数组的 C# 结构?

python - 使用python将bytearray转换为float