• ベストアンサー

平成17年度春の午後問題について教えてください

ttp://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H17a2/pm06.html の問題なのですが、空欄dが分かりません。 char_listはvoid print_string 関数内でアドレスで 受け取り、int word_width 関数でもアドレスで受け取っていると思うのですが、違うのでしょうか?

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>ポインタなのに配列として扱っているのが疑問なんです。 #1でも述べたように[]は演算子なので、 char a[]={'a','b','c'}; char *b; b=a; printf("a[1]=%c\n",b[1]); のように扱うことができます。 この場合 b[1]は、*(b+1)と同じ意味です。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

イ *str != char_list[idx].char_p だと思いますが >char_list[idx] の使い方が疑問である(ポインタ(アドレス)なのに、配列として使っている)ということでしょうか 基本的に アドレス[]の様に使って相対アドレスでアクセスできます。 []は必ずしも配列というわけではなく、Cでは単なる演算子である為にそのように使用できます。

yuyakiyo
質問者

補足

解答ありがとうございます。 そうです、ポインタなのに配列として扱っているのが 疑問なんです。 調べてみるとポインタ配列というのがあるみたいなのですが、 char *name[3]{ "tarou", "jirou", "sirou", }; のようなやりかたと同じなのでしょうか?これの仕組みもよく分からないのですが。

関連するQ&A