- ベストアンサー
平成17年度春の午後問題について教えてください
ttp://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H17a2/pm06.html の問題なのですが、空欄dが分かりません。 char_listはvoid print_string 関数内でアドレスで 受け取り、int word_width 関数でもアドレスで受け取っていると思うのですが、違うのでしょうか?
- みんなの回答 (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では単なる演算子である為にそのように使用できます。
補足
解答ありがとうございます。 そうです、ポインタなのに配列として扱っているのが 疑問なんです。 調べてみるとポインタ配列というのがあるみたいなのですが、 char *name[3]{ "tarou", "jirou", "sirou", }; のようなやりかたと同じなのでしょうか?これの仕組みもよく分からないのですが。