我有一个二维数组列表:
float a[][9] = { ... }
float b[][9] = { ... }
float c[][9] = { ... }
我想要另一个指向每个二维数组的指针数组,如下所示:
what_should_be_here?? arr[] = { a, b, c }
如何做到这一点?
我有一个二维数组列表:
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
简化声明!希望有帮助。