2D配列のリストがあります:
float a[][9] = { ... }
float b[][9] = { ... }
float c[][9] = { ... }
次のように、各2D配列を指す別のポインター配列が必要です。
what_should_be_here?? arr[] = { a, b, c }
これを達成する方法は?
2D配列のリストがあります:
float a[][9] = { ... }
float b[][9] = { ... }
float c[][9] = { ... }
次のように、各2D配列を指す別のポインター配列が必要です。
what_should_be_here?? arr[] = { a, b, c }
これを達成する方法は?
typedef
宣言を簡略化するために使用します。arr の各要素はfloat (*)[9]
. このタイプが であるとしSomeType
ます。次に{a,b,c}
、 type の 3 つの要素の配列が必要であることを意味します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
宣言を簡素化するために使用してください!それが役立つことを願っています。