なぜこれが機能するのですか:
void SomeFunction(int SomeArray[][30]);
しかし、これはそうではありませんか?
void SomeFunction(int SomeArray[30][]);
なぜこれが機能するのですか:
void SomeFunction(int SomeArray[][30]);
しかし、これはそうではありませんか?
void SomeFunction(int SomeArray[30][]);
配列を引数として渡す場合、最初の[]
パラメーターはオプションですが、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]