回答編集履歴

3

出力部に関する回答編集

2018/10/03 10:17

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -102,10 +102,36 @@
102
102
 
103
103
 
104
104
 
105
- こちらの環境では表示されました。
105
+ ~~こちらの環境では表示されました。
106
106
 
107
107
  出力部がないプログラムをコンパイルしたまま実行したとか
108
108
 
109
109
  そういう点を確認してみてください。
110
110
 
111
- コンパイルエラーはないのですよね?
111
+ コンパイルエラーはないのですよね?~~
112
+
113
+ paiza.ioで確認してたのですが、segmentation faultが起きずに
114
+
115
+ そのまま処理が行われていたようです。
116
+
117
+
118
+
119
+ 原因は以下の部分ですね。
120
+
121
+ ```C++
122
+
123
+ for (int i = 0; i < size; i++) {
124
+
125
+ ptr++;
126
+
127
+ sum = sum + *(ptr + i);
128
+
129
+ count++;
130
+
131
+ }
132
+
133
+ ```
134
+
135
+ `ptr++`でポインタを移動した後に
136
+
137
+ `*(ptr + i)`で更に先のアドレスを参照してます。

2

追記の質問も見て追記

2018/10/03 10:17

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -87,3 +87,25 @@
87
87
 
88
88
 
89
89
  呼び出し部分を真似て埋めてみて違いを見つけてください。
90
+
91
+
92
+
93
+ ---
94
+
95
+
96
+
97
+ [追記された質問を見て追記]
98
+
99
+
100
+
101
+ > このコードをコンパイルするとアウトプットに何も表示されません。
102
+
103
+
104
+
105
+ こちらの環境では表示されました。
106
+
107
+ 出力部がないプログラムをコンパイルしたまま実行したとか
108
+
109
+ そういう点を確認してみてください。
110
+
111
+ コンパイルエラーはないのですよね?

1

関数の呼び出し部分について追記

2018/10/03 09:34

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -23,3 +23,67 @@
23
23
  に分けて使用するのが良いかと思います。
24
24
 
25
25
  そうすれば参照渡しで結果を求めるという処理を避けることができます。
26
+
27
+
28
+
29
+ ---
30
+
31
+
32
+
33
+ [関数の呼び出しについて追記]
34
+
35
+
36
+
37
+ > 引数の数など間違えていると思うのですが、何がどう違うのか少し教えて頂けないでしょうか。
38
+
39
+
40
+
41
+ 呼び出し部分と定義部分を左から順番に確認していけば違いは分かるかと思います。
42
+
43
+
44
+
45
+ **呼び出し部分**
46
+
47
+
48
+
49
+ ```C++
50
+
51
+ /* main関数内の呼び出し部分 */
52
+
53
+ meanHighLow(num, mean, sizeof(num) / sizeof(num[0]), &max, &min);
54
+
55
+ ```
56
+
57
+
58
+
59
+ | データ型 | 整数配列 | 小数 | 整数 | 整数 | 整数 |
60
+
61
+ | :--: | -- | -- | -- | -- | -- |
62
+
63
+ | 変数名 | num | mean | sizeof(num) / sizeof(num[0]) | &max | &min |
64
+
65
+
66
+
67
+ **関数の定義部分**
68
+
69
+
70
+
71
+ ```C++
72
+
73
+ /* 関数の定義部分 */
74
+
75
+ void meanHighLow(int* array, int size, double &average, int &high, int &low);
76
+
77
+ ```
78
+
79
+
80
+
81
+ | データ型 | xxx | xxx | xxx | ... |
82
+
83
+ | :--: | -- | -- | -- |
84
+
85
+ | 変数名 | yyy | yyy | yyy | ... |
86
+
87
+
88
+
89
+ 呼び出し部分を真似て埋めてみて違いを見つけてください。