0

2D配列のリストがあります:

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

次のように、各2D配列を指す別のポインター配列が必要です。

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

これを達成する方法は?

4

1 に答える 1

6

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宣言を簡素化するために使用してください!

それが役立つことを願っています。

于 2013-01-25T05:32:06.483 に答える