teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

回答の修正

2018/03/16 00:20

投稿

y_waiwai
y_waiwai

スコア88173

answer CHANGED
@@ -1,7 +1,6 @@
1
1
  > student_input(&data[0]/* あるいは data ? */, 3);
2
2
 
3
3
  この書き方だと、data[0] のアドレスをstudent_input に渡しています
4
- data 配列の0番目の要素を渡してますが、
5
4
  この関数の内容からすると、data という(配列)変数のアドレスを渡すべきですから、
6
5
 
7
6
  > student_input(&data, 3);

2

回答の修正

2018/03/16 00:20

投稿

y_waiwai
y_waiwai

スコア88173

answer CHANGED
@@ -34,7 +34,7 @@
34
34
  ---
35
35
  で、ホンマは、
36
36
  dataは、student配列のアドレスですから、
37
- > void student_input(student *data[], int count) {
37
+ > void student_input(student *(data[]), int count) {
38
38
 
39
39
  と定義するのが正解なんですねー
40
40
 

1

回答の追加

2018/03/16 00:14

投稿

y_waiwai
y_waiwai

スコア88173

answer CHANGED
@@ -8,4 +8,34 @@
8
8
 
9
9
  とするのが正解でしょうね。
10
10
 
11
- #ちなみに、上記2通りの書き方では全く同じ値がstudent_input に渡るんで同じ結果になりますが
11
+ #ちなみに、上記2通りの書き方では全く同じ値がstudent_input に渡るんで同じ結果になりますが
12
+
13
+ ---
14
+ ```
15
+ void student_input(student *data, int count) {
16
+ int i;
17
+ char txt;
18
+ for (i=0; i<count; i++){
19
+ scanf("%s", data[i]->name);
20
+ scanf("%d", data[i]->year);
21
+ scanf("%s", data[i]->sex);
22
+ }
23
+
24
+ return;
25
+ }
26
+ ```
27
+ この関数の引数、dataは、student配列のアドレスですから、
28
+ data[i] で、student配列のi番目の要素を表します
29
+ なので、
30
+ > data[i].name
31
+
32
+ という記述でないとダメですね。
33
+
34
+ ---
35
+ で、ホンマは、
36
+ dataは、student配列のアドレスですから、
37
+ > void student_input(student *data[], int count) {
38
+
39
+ と定義するのが正解なんですねー
40
+
41
+ #まーどっちでも同じ結果になるんでええっちゃーえーはなしですが