回答編集履歴

3

回答の修正

2018/03/16 00:20

投稿

y_waiwai
y_waiwai

スコア87774

test CHANGED
@@ -3,8 +3,6 @@
3
3
 
4
4
 
5
5
  この書き方だと、data[0] のアドレスをstudent_input に渡しています
6
-
7
- data 配列の0番目の要素を渡してますが、
8
6
 
9
7
  この関数の内容からすると、data という(配列)変数のアドレスを渡すべきですから、
10
8
 

2

回答の修正

2018/03/16 00:20

投稿

y_waiwai
y_waiwai

スコア87774

test CHANGED
@@ -70,7 +70,7 @@
70
70
 
71
71
  dataは、student配列のアドレスですから、
72
72
 
73
- > void student_input(student *data[], int count) {
73
+ > void student_input(student *(data[]), int count) {
74
74
 
75
75
 
76
76
 

1

回答の追加

2018/03/16 00:14

投稿

y_waiwai
y_waiwai

スコア87774

test CHANGED
@@ -19,3 +19,63 @@
19
19
 
20
20
 
21
21
  #ちなみに、上記2通りの書き方では全く同じ値がstudent_input に渡るんで同じ結果になりますが
22
+
23
+
24
+
25
+ ---
26
+
27
+ ```
28
+
29
+ void student_input(student *data, int count) {
30
+
31
+ int i;
32
+
33
+ char txt;
34
+
35
+ for (i=0; i<count; i++){
36
+
37
+ scanf("%s", data[i]->name);
38
+
39
+ scanf("%d", data[i]->year);
40
+
41
+ scanf("%s", data[i]->sex);
42
+
43
+ }
44
+
45
+
46
+
47
+ return;
48
+
49
+ }
50
+
51
+ ```
52
+
53
+ この関数の引数、dataは、student配列のアドレスですから、
54
+
55
+ data[i] で、student配列のi番目の要素を表します
56
+
57
+ なので、
58
+
59
+ > data[i].name
60
+
61
+
62
+
63
+ という記述でないとダメですね。
64
+
65
+
66
+
67
+ ---
68
+
69
+ で、ホンマは、
70
+
71
+ dataは、student配列のアドレスですから、
72
+
73
+ > void student_input(student *data[], int count) {
74
+
75
+
76
+
77
+ と定義するのが正解なんですねー
78
+
79
+
80
+
81
+ #まーどっちでも同じ結果になるんでええっちゃーえーはなしですが