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

回答編集履歴

2

勘違いの修正

2015/11/07 16:06

投稿

T.Kanno
T.Kanno

スコア915

answer CHANGED
@@ -9,5 +9,6 @@
9
9
 
10
10
  もしくは、String の実装のように、class 等を使用してデータの一部に配列のサイズを含めるのが良いでしょう。
11
11
 
12
- あまりお勧めは出来ませんが(かなり危険な方法に思えます)、C++の参照渡す方法もあります。
12
+ ###あまりお勧めは出来ませんが(かなり危険な方法に思えます)、 **←左記部分は、勘違いした**
13
+ C++の参照で渡す方法もあります。
13
14
 

1

修正しました

2015/11/07 16:06

投稿

T.Kanno
T.Kanno

スコア915

answer CHANGED
@@ -1,12 +1,13 @@
1
1
  まず main内の arr と、func内の仮パラメータ arr は別物である事に注意してください。
2
- func内での arr 参照は、mainから渡された arr では無く、func内の仮パラメータ arr[][2]への参照です。
2
+ func内での arr は、mainから渡された arr では無く、func内の仮パラメータ arr[][2]への参照です。
3
3
 
4
4
  また、配列を関数に渡す場合、配列そのものではなく配列のポインタが渡される事に注意してください。
5
5
  この辺の仕組みは、C/C++ の関数コーリングシーケンスを参照してください。
6
6
 
7
- 結論から述べると、何らかの別の方法で配列のサイズを関数に渡さないと、関数側では配列のサイズを認識できません。
8
-
9
7
  最も簡単な方法は、
10
8
  void func(int sz, int arr[][2]) 等のようにサイズを渡す。
11
9
 
12
- もしくは、String の実装のように、class 等を使用してデータの一部に配列のサイズを含めるのが良いでしょう。
10
+ もしくは、String の実装のように、class 等を使用してデータの一部に配列のサイズを含めるのが良いでしょう。
11
+
12
+ あまりお勧めは出来ませんが(かなり危険な方法に思えます)、C++の参照で渡す方法もあります。
13
+