• ベストアンサー

関数での配列の扱いかたについて教えてください

http://www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H17a2/pm10.html この問題の10行目の void make_fare_table(int num, double *dist_list, COSTUNIT *cost_list, int **fare_table ) { の * dist_list ところなんですが、関数で配列を受け取るとき 文字列の場合は *dist_list ですが、 この問題の場合 dist_listは距離の配列、つまり数値の配列だから、dist_list[]で受け取るのだと思うのですが *dist_listとなっているのは、なぜでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

まず、 > 関数で配列を受け取るとき 文字列の場合は *dist_list ですが、 というのが勘違いのもとです。 配列を関数で受ける場合には、 型 *list でも、型 list[] でも、いずれでもOK です。ついでにいえば、同じように使えます。 char list[] で受けても、問題はありません。 配列は関数の引数として渡された場合、配列の先頭を指すポインタに変換されますので、 型 *list の方がよさそうではありますが。

yuyakiyo
質問者

お礼

すばやい解答ありがとうございました。 ようやく理解できることができました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • rigidbody
  • ベストアンサー率60% (20/33)
回答No.2

>*dist_listとなっているのは、なぜでしょうか? その人の流儀だからです。だから気にする必要は無いです。どちらの表現でも同じように翻訳されるからです。 が、私ならdist_list[]を採ります。そちらの方が文書性が高いと思うからです。 *表現では、単一変数へのポインタなのか 配列の先頭を渡しているのかを即座に推測出来ません。が、[]なら後者であろう事がすぐに分かります。 両表現のコストが同じなら、少しでも儲けの大きい方を採った方がお得感があるでしょう。だから後者を使いますねぇ。

yuyakiyo
質問者

お礼

解答ありがとうございます。 今回は早いもの順でポイントをつけさせていただきました。すいません。丁寧に答えていただきありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A