• ベストアンサー

授業でプログラミングやってるんですが

構造体を使っているところで、構造体の要素を指定する際に、 ×××->○○○と使うところと、 ×××.○○○というふうに使うところがあります。 この二つの違いはなんでしょうか?

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

実際の使用例を #include <stdio.h> typedef struct{ int a; }ST; void print_struct(ST* pst) { // pstはポインタなのでメンバへのアクセスは -> を使う printf("pst->a=%d\n", pst->a); } int main(void) { ST st; // 構造体の実体 st.a = 10; // 実体のメンバにアクセスするときは . printf("st.a=%d\n", st.a); print_struct(&st); // 関数に構造体のポインタを渡す return 0; } この例では構造体はint1個だけですが大きな構造体を関数に渡す場合は値渡しだと構造体の複製に無駄があるのでよくポインタ渡しにします。 そのため関数では -> によるアクセスが多くなりますね。

pontapass
質問者

お礼

非常にわかりやすい説明ありがとうございます。 理解することができました!

その他の回答 (2)

  • mk48a
  • ベストアンサー率56% (1133/2007)
回答No.2

XXX->○○○ の場合のXXXはポインタ XXX.○○○ の場合のXXXは実体

pontapass
質問者

お礼

初歩的な質問ですいません。 無事理解することができました。ありがとうございました!

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

メンバへのアクセスと、ポインタを介したメンバへのアクセス

pontapass
質問者

お礼

初歩的な質問に答えてくださってありがとうございます。 とても参考になりました!

関連するQ&A

専門家に質問してみよう