3
int main() {
    int **matrix = {
        {1, 3, 2, 4},
        {3, 2, 4, 5},
        {9, 3, 2, 1}
    };

    getchar();
}
  1. 「スカラー初期化子を中括弧で囲む」などの警告が表示されるのはなぜですか?
  2. 多次元配列を複数のポインターで初期化する必要があるのはなぜですか? (これについてかなりわかりやすい説明をしていただければ...)
  3. int **matrix の代わりに int matrix[3][4] を使用したい場合...この配列を渡したい場合、関数パラメーターは何でしょうか? int[][]?
4

1 に答える 1

5

int **配列型ではなくポインタ型です。ポインターは配列ではありません。タイプを使用しint [3][4]ます。

関数に配列を渡すことはできませんが、配列へのポインターを渡すことはできます。配列 4 へのポインターを渡す関数宣言は次のintようになります。

void f(int arr[3][4]);

また

void f(int arr[][4]);

また

void f(int (*arr)[4]);

3 つの宣言は同等です。

于 2013-01-19T12:54:00.217 に答える