0

我有一个二维数组列表:

float a[][9] = { ... }
float b[][9] = { ... }
float c[][9] = { ... }

我想要另一个指向每个二维数组的指针数组,如下所示:

what_should_be_here?? arr[] = { a, b, c }

如何做到这一点?

4

1 回答 1

6

用于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简化声明!

希望有帮助。

于 2013-01-25T05:32:06.483 回答