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

回答編集履歴

3

出力部に関する回答編集

2018/10/03 10:17

投稿

dice142
dice142

スコア5158

answer CHANGED
@@ -50,7 +50,20 @@
50
50
 
51
51
  > このコードをコンパイルするとアウトプットに何も表示されません。
52
52
 
53
- こちらの環境では表示されました。
53
+ ~~こちらの環境では表示されました。
54
54
  出力部がないプログラムをコンパイルしたまま実行したとか
55
55
  そういう点を確認してみてください。
56
- コンパイルエラーはないのですよね?
56
+ コンパイルエラーはないのですよね?~~
57
+ paiza.ioで確認してたのですが、segmentation faultが起きずに
58
+ そのまま処理が行われていたようです。
59
+
60
+ 原因は以下の部分ですね。
61
+ ```C++
62
+ for (int i = 0; i < size; i++) {
63
+ ptr++;
64
+ sum = sum + *(ptr + i);
65
+ count++;
66
+ }
67
+ ```
68
+ `ptr++`でポインタを移動した後に
69
+ `*(ptr + i)`で更に先のアドレスを参照してます。

2

追記の質問も見て追記

2018/10/03 10:17

投稿

dice142
dice142

スコア5158

answer CHANGED
@@ -42,4 +42,15 @@
42
42
  | :--: | -- | -- | -- |
43
43
  | 変数名 | yyy | yyy | yyy | ... |
44
44
 
45
- 呼び出し部分を真似て埋めてみて違いを見つけてください。
45
+ 呼び出し部分を真似て埋めてみて違いを見つけてください。
46
+
47
+ ---
48
+
49
+ [追記された質問を見て追記]
50
+
51
+ > このコードをコンパイルするとアウトプットに何も表示されません。
52
+
53
+ こちらの環境では表示されました。
54
+ 出力部がないプログラムをコンパイルしたまま実行したとか
55
+ そういう点を確認してみてください。
56
+ コンパイルエラーはないのですよね?

1

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

2018/10/03 09:34

投稿

dice142
dice142

スコア5158

answer CHANGED
@@ -10,4 +10,36 @@
10
10
  - 受け取った配列から最小値を探して返す関数
11
11
 
12
12
  に分けて使用するのが良いかと思います。
13
- そうすれば参照渡しで結果を求めるという処理を避けることができます。
13
+ そうすれば参照渡しで結果を求めるという処理を避けることができます。
14
+
15
+ ---
16
+
17
+ [関数の呼び出しについて追記]
18
+
19
+ > 引数の数など間違えていると思うのですが、何がどう違うのか少し教えて頂けないでしょうか。
20
+
21
+ 呼び出し部分と定義部分を左から順番に確認していけば違いは分かるかと思います。
22
+
23
+ **呼び出し部分**
24
+
25
+ ```C++
26
+ /* main関数内の呼び出し部分 */
27
+ meanHighLow(num, mean, sizeof(num) / sizeof(num[0]), &max, &min);
28
+ ```
29
+
30
+ | データ型 | 整数配列 | 小数 | 整数 | 整数 | 整数 |
31
+ | :--: | -- | -- | -- | -- | -- |
32
+ | 変数名 | num | mean | sizeof(num) / sizeof(num[0]) | &max | &min |
33
+
34
+ **関数の定義部分**
35
+
36
+ ```C++
37
+ /* 関数の定義部分 */
38
+ void meanHighLow(int* array, int size, double &average, int &high, int &low);
39
+ ```
40
+
41
+ | データ型 | xxx | xxx | xxx | ... |
42
+ | :--: | -- | -- | -- |
43
+ | 変数名 | yyy | yyy | yyy | ... |
44
+
45
+ 呼び出し部分を真似て埋めてみて違いを見つけてください。