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

質問編集履歴

5

参照値の渡し方は実態ではなくコピーを渡しているのか?

2021/05/15 19:17

投稿

happykeikin
happykeikin

スコア3

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,19 @@
51
51
 
52
52
 
53
53
  みなさんはこれはこういうものだって割り切って理解しているのでしょうか?
54
- なんかもっとスッキリしたいな~
54
+ なんかもっとスッキリしたいな~
55
+
56
+ *************************************************************************************
57
+
58
+ もう少しで納得しそうです。本当に皆様ありがとうございます。
59
+
60
+ 12行目でメソッド1にarrayを渡していますがこれは、あくまで実態ではなく参照値のコピー
61
+ ここでもし実態を渡していたら(javaではありえませんが)aとarrayは同一のものになり
62
+
63
+ 3行目の a = other;  の処理で同じところが書き換えられarrayに反映するかと思うのですが、これがコピーだから影響ないという認識で間違いないでしょうか?
64
+
65
+
66
+ このような処理をC言語やC++での参照渡しでおこなったらどうなるのでしょうか?
67
+ お詳しい方いたら教えていただけると助かります。  
68
+
69
+ *************************************************************************************

4

文字の修正

2021/05/15 19:17

投稿

happykeikin
happykeikin

スコア3

title CHANGED
File without changes
body CHANGED
@@ -51,19 +51,4 @@
51
51
 
52
52
 
53
53
  みなさんはこれはこういうものだって割り切って理解しているのでしょうか?
54
- なんかもっとスッキリしたいな~
54
+ なんかもっとスッキリしたいな~
55
-
56
- *************************************************************************************
57
-
58
- もう少しで納得しそうです。本当に皆様ありがとうございます。
59
-
60
- 12行目でメソッド1にarrayを渡していますがこれは、あくまで実態ではなく参照値のコピー
61
- ここでもし実態を渡していたら(javaではありえませんが)aとarrayは同一のものになり
62
-
63
- 3行目の a = other;  の処理で同じところが書き換えられarrayに反映するかと思うのですが、これがコピーだから影響ないという認識で間違いないでしょうか?
64
-
65
-
66
- このような処理をC言語やC++での参照渡しでおこなったらどうなるのでしょうか?
67
- お詳しい方いたら教えていただけると助かります。
68
-
69
- *************************************************************************************

3

参照値の渡し方は実態ではなくコピーを渡しているのか?

2021/05/15 19:07

投稿

happykeikin
happykeikin

スコア3

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,19 @@
51
51
 
52
52
 
53
53
  みなさんはこれはこういうものだって割り切って理解しているのでしょうか?
54
- なんかもっとスッキリしたいな~
54
+ なんかもっとスッキリしたいな~
55
+
56
+ *************************************************************************************
57
+
58
+ もう少しで納得しそうです。本当に皆様ありがとうございます。
59
+
60
+ 12行目でメソッド1にarrayを渡していますがこれは、あくまで実態ではなく参照値のコピー
61
+ ここでもし実態を渡していたら(javaではありえませんが)aとarrayは同一のものになり
62
+
63
+ 3行目の a = other;  の処理で同じところが書き換えられarrayに反映するかと思うのですが、これがコピーだから影響ないという認識で間違いないでしょうか?
64
+
65
+
66
+ このような処理をC言語やC++での参照渡しでおこなったらどうなるのでしょうか?
67
+ お詳しい方いたら教えていただけると助かります。
68
+
69
+ *************************************************************************************

2

「参照渡し」と「参照の値渡し」の違い

2021/05/15 19:04

投稿

happykeikin
happykeikin

スコア3

title CHANGED
File without changes
body CHANGED
@@ -37,4 +37,18 @@
37
37
  私の勉強不足でまだ腑に落ちていないような気がします。
38
38
  この図のような認識であっているでしょうか?
39
39
 
40
- ![イメージ説明](e690074a45c5e682358fc806c311cb1f.jpeg)
40
+ ![イメージ説明](e690074a45c5e682358fc806c311cb1f.jpeg)
41
+
42
+ そもそも、この問題は参照渡しが理解できないというより
43
+
44
+ 「参照渡し」と「参照の値渡し」の違いが理解できていないという事だったのですね。
45
+
46
+ メソッド1(参照の値渡し)
47
+      記述が省略してあるがnewしているので参照の値渡し → 呼び出し元の値は変わらない。
48
+
49
+ メソッド2は(参照渡し)
50
+      こちらは参照先の値が共通なので呼び出し元の値も変わる。
51
+
52
+
53
+ みなさんはこれはこういうものだって割り切って理解しているのでしょうか?
54
+ なんかもっとスッキリしたいな~

1

アドバイス頂いた内容を元に図解してみました。間違っているところがあればご指摘いただければ助かります。

2021/05/15 09:13

投稿

happykeikin
happykeikin

スコア3

title CHANGED
File without changes
body CHANGED
@@ -27,4 +27,14 @@
27
27
  14
28
28
  15 method2(array);
29
29
  16 System.out.println(array[0]); // => 100
30
- 17}
30
+ 17}
31
+
32
+
33
+ 追記
34
+
35
+ ご回答してくださった方々本当にありがとうございます!
36
+ アドバイスをもとに、自分なりに図を書いてみました。
37
+ 私の勉強不足でまだ腑に落ちていないような気がします。
38
+ この図のような認識であっているでしょうか?
39
+
40
+ ![イメージ説明](e690074a45c5e682358fc806c311cb1f.jpeg)