C言語なら俺に聞け(入門篇) Part 38at TECH
C言語なら俺に聞け(入門篇) Part 38 - 暇つぶし2ch485:デフォルトの名無しさん
08/11/07 19:56:33
>>472
関数に配列を渡すことはできない。渡されるのは常に配列の戦闘要素へのポインタである。
double data[X][Y] という配列があるとき、data は double の配列の配列であり、
これを関数呼び出しの引数に書くと、それは double の配列へのポインタに変換される。
実際に関数にわたるのはこのポインタで、その型は double (*)[Y] である。
だから関数の仮引数の宣言は以下のようになる。

int func(double (*data)[Y]) …①

ただし、これは次のように書いてもいい。

int func(double data[X][Y]) …②
int func(double data[][Y])  …③

②は配列そのものを表しているが、既に述べたように関数が配列そのものを受け取ることはない。
そこで、関数の仮引数に配列が書かれたときには、配列がその先頭要素へのポインタに置き換わるのと同様に、
その配列要素へのポインタを宣言したのと同じに扱われることになっている。だから②の持つ意味は①と同じである。
ここで②がポインタに置き換わるとき、当然最初の添字Xは無視されることとなる。つまり③のように省略が可能である。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch