2

なぜこれが機能するのですか:

void SomeFunction(int SomeArray[][30]);

しかし、これはそうではありませんか?

void SomeFunction(int SomeArray[30][]);
4

2 に答える 2

2

配列を引数として渡す場合、最初の[]パラメーターはオプションですが、2 番目以降のパラメーターは必須です。それが言語文法の慣習です。

さらに、実際には配列を渡すのではなく、要素の配列へのポインターを渡します[30]。より良い説明については、次を参照してください。

T a1[10], a2[10][20];
T *p1;    // pointer to an 'int'
T (*p2)[20];  // pointer to an 'int[20]'

p1 = a1;  // a1 decays to int[], so can be pointed by p1
p2 = a2;  // a2 decays to int[][20], so can be pointed by p2

int[]また、は の別の形式でint*あり、のint[][20]別の形式であることも覚えておいてください。int (*)[20]

于 2012-04-28T06:12:24.907 に答える