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

回答編集履歴

1

追記

2018/05/23 16:50

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -21,6 +21,7 @@
21
21
  よって、次のように書けます。
22
22
  ```C
23
23
  move_array(a, b, 6);
24
+ // move_array(&a[0], &b[0], 6); 明示的に書いても可
24
25
  ```
25
26
 
26
27
  ご提示のコードのように書くと、『6番目の要素のアドレス』を渡そうとしてしまいます。
@@ -42,6 +43,7 @@
42
43
  ```
43
44
 
44
45
  スワップ処理に関しては、検索すればすぐ見つかるはずです。
46
+ べた書きしても良いですし、swap関数を用意してもかまいません。マクロは取扱注意です。
45
47
 
46
48
  show_arrayの使い方について
47
49
  ---
@@ -63,4 +65,18 @@
63
65
  要素数の渡し方について
64
66
  ---
65
67
  これもバグではありませんが、sizeof演算子を上手に利用すると簡潔に書けます。
66
- 関心があるようでしたら調べてみてください。
68
+ 関心があるようでしたら調べてみてください。
69
+
70
+ 変数nの取り扱いについて
71
+ ---
72
+ > ```C
73
+ int n = 0;
74
+
75
+ > ...
76
+
77
+ > move_array(&a[6], &b[6], 6);
78
+ show_array(&a[6], n);
79
+ > ```
80
+
81
+ これだとnが初期値0のまま変わりませんね。
82
+ move_arrayの第3仮引数の名前がnですが、これはmain関数スコープの変数nとは**無関係**です。