カラムサイズが指定されていないとコンパイラはサイズ情報を知らないと言う人がいます。しかし、どのようにコンパイラが行のサイズを知っていますか?列のサイズを解釈できない理由2d配列を関数に渡すときにカラムサイズを指定する理由
答えて
関数の引数として配列を渡している間、コンパイラは暗黙的に配列参照をポインタに変換します。これは明らかに
int method(int *a)
int method(int a[])
ように、一次元アレイの場合に見られるこれらの両方の行が(ポインタと配列の参照は異なるが)配列式に現れるたびので、コンパイラは暗黙的に生成ここに同等ですプログラマが& a [0]と書いたかのように、配列の最初の要素へのポインタ。しかし、このルールは再帰的ではありません。すなわち、2次元配列を渡すことは、ポインタへのポインタではなく、配列へのポインタとして扱われます。
int method(int b[3][5]);
は
int method(int (*b)[5]);
に変換され、行のサイズは重要ではないので、呼び出された関数は、配列のためのスペースを割り当てないので、カラムのしかしサイズがサイズを提供することが重要ですアレイ。詳細はhereをご覧ください。
こんにちは、Rajeev。あなたに良い投稿と参照をありがとう。それは本当に私にとって新しいものでした。しかし、私はまだ一つの文が不明です: "呼び出される関数は配列にスペースを割り当てないので、全体のサイズを知る必要はないので、行数NROWSを省略することができます。それでもなお重要です " – nathan
2次元配列は暗黙的にポインタの配列であることを覚えておいてください。配列サイズごとに分かるはずですが、ここではサイズは列サイズです@ user3529352 –
- 1. 2D配列を関数に渡す
- 2. 2D配列をスレッド関数に渡す
- 3. 2D char *配列を関数に渡すときのエラー
- 4. 1D固定配列を2Dポインタ関数に渡す
- 5. 2d配列を関数に渡すときに2d配列を型として宣言する理由と、その型に行と列を含める理由は何ですか?
- 6. 動的にサイズの2D配列を関数に渡す
- 7. 配列と関数の中にパラメータを挿入する理由
- 8. javascriptの2D配列の要素を上書きする理由
- 9. 配列とポインタを関数に渡す
- 10. 2D配列を関数に渡す:ゼロ値と印刷の問題
- 11. Powershell:配列を関数に渡すときにWhatIfを使う
- 12. 関数に渡す配列
- 13. VB:2D配列をSubに渡す
- 14. 2d配列をコンストラクタに渡します。
- 15. 可変次元の2D配列を関数の引数として渡す
- 16. 2d std :: arrayを関数cppに渡す
- 17. 配列へのポインタを関数に渡すときのセグメンテーションフォールト(C++)
- 18. グローバル変数を関数に渡す理由は何ですか?
- 19. 内部配列を関数に渡す
- 20. ejs配列をjavascript関数に渡す
- 21. 文字配列を関数に渡す
- 22. 配列をルビ関数に渡す
- 23. 配列を関数に渡す
- 24. PHP配列をJavaScript関数に渡す
- 25. 配列[index]を関数に渡す
- 26. JavaScript配列を関数に渡す
- 27. 関数にC++配列を渡す
- 28. javascript onclick関数に配列を渡す
- 29. 配列を関数に渡す
- 30. 配列をC++の関数に渡すときにスタックオーバーフローを避けるには?
あなたが話している言語は何ですか? –
[2D配列をパラメータとして渡すときに列のサイズを指定する必要があるのはなぜですか?](http://stackoverflow.com/questions/12813494/why-do-we-need-to-specify-the -column-size-passing-a-2d-array-as-a-parameter) – melpomene
私はCについて話しています。 – nathan