• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のポインタorアロー演算子について質問です。)

C言語のポインタとアロー演算子について

このQ&Aのポイント
  • C言語のポインタとアロー演算子について質問があります。具体的にどこが悪いのかが分からずに進めずにいます。
  • 質問者はC言語を独学で学んでおり、ポインタやアロー演算子について無知な部分が多いとのことです。
  • 質問者は上記のプログラムを実行した際に意図しない結果が出力されてしまい、具体的にどこが悪いのか分からない状況です。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> s = &student2[5]; これは、 student2[5] (student2配列の添字5の要素)に対して&でアドレスを求めることになります。 student2配列の先頭[0]をポインタに入れるなら、 丁寧に書けば s = &student2[0] ; 配列とポインタが同等に扱われることを利用すれば s = student2 ; です。 record student2[5] と宣言したので、添字は0から4であり、 student2[5]は存在しません。 しかし、Cは「6番目」にあたる領域にアクセスしようとします。今回はたまたまそこに student1 の領域があって、&student2[5] == &student1 になったのでしょう。 5回同じ表示になるのは、ループ中でsが変化していないからです。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

余談ですが record student2[5] に対して &student2[5] は完全に合法です. まったく本題とは関係ありませんが, ねんのため.

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

s = &student2[0]; // s = &student2[5]; for(i=0; i<5; s++, i++) { // for(i=0; i<5; i++) {

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

まずは、「どういう動きが正しいのか」を記載しましょう。 プログラムの内容ではなく、やりたいことが判らないと修正しようがないでしょ?

関連するQ&A