Mif*_*eng 0 c++ arrays pointers multidimensional-array
我有一个2D数组列表:
float a[][9] = { ... }
float b[][9] = { ... }
float c[][9] = { ... }
Run Code Online (Sandbox Code Playgroud)
我想要另一个指向每个2D数组的指针数组,如下所示:
what_should_be_here?? arr[] = { a, b, c }
Run Code Online (Sandbox Code Playgroud)
怎么做到这一点?
使用typedef简化的声明.arr的每个元素都是float (*)[9].说这种类型是SomeType.那{a,b,c}意味着你需要一个包含三个元素类型的数组SomeType.
SomeType arr[] = {a,b,c};
Run Code Online (Sandbox Code Playgroud)
现在的问题是,什么是SomeType?所以你走了:
typedef float (*SomeType)[9]; //SomeType is a typedef of `float (*)[9]`
SomeType arr[] = {a,b,c}; //this will compile fine now!
Run Code Online (Sandbox Code Playgroud)
正如我所说,用于typedef简化声明!
我会选择一个更好的名字SomeType:
typedef float (*PointerToArrayOf9Float)[9];
PointerToArrayOf9Float arr[] = {a,b,c};
Run Code Online (Sandbox Code Playgroud)
这是一个更长的名称,但它使代码可读!
请注意,如果没有typedef,您的代码将如下所示:
float (*arr[])[9] = {a,b,c};
Run Code Online (Sandbox Code Playgroud)
这是UGLY.这就是为什么我会重复:
typedef简化宣言!希望有所帮助.
| 归档时间: |
|
| 查看次数: |
1110 次 |
| 最近记录: |