質問: %s\n",pdata[0].name); //いける return 0; } ```
回答: > > student_input(&data[0]/* あるいは data ? */, 3); > > > この書き方だと、data[0] のアドレスをstudent_input に渡しています この関数の内容からすると、data という(配列)変数のアドレスを渡すべきですから、 > > student_input(&data, 3); > > > とするのが正解でしょうね。 #ちなみに、上記2通りの書き方では全く同じ値がstudent_input に渡るんで同じ結果になりますが ``` void student_input(student *data, int count) { int i; char txt; for (i=0; iname); scanf("%d", data[i]->year); scanf("%s", data[i]->sex); } return; } ``` この関数の引数、dataは、student配列のアドレスですから、 data[i] で、student配列のi番目の要素を表します なので、 > > data[i].name > > > という記述でないとダメですね。 で、ホンマは、 dataは、student配列のアドレスですから、 > > void student_input(student *(data[]), int count) { > > > と定義するのが正解なんですねー #まーどっちでも同じ結果になるんでええっちゃーえーはなしですが