回答編集履歴
3
補足
test
CHANGED
@@ -117,3 +117,23 @@
|
|
117
117
|
参照は結構難しくて、上記以外にも特別な機能を持つ参照(const参照や右辺値参照)があります。
|
118
118
|
|
119
119
|
でも、まずはポインタと参照をマスターされると良いと思います。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
---
|
124
|
+
|
125
|
+
【追記】
|
126
|
+
|
127
|
+
あっとと、すいません。参照渡しではなくて参照を説明してました。
|
128
|
+
|
129
|
+
でも、仮引数はローカル変数とほとんど同じ振る舞いをします。
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
仮引数はそれを定義した関数内だけで有効です。ローカル変数はそれを定義したところからそのブロックの終わりまで有効です。
|
134
|
+
|
135
|
+
仮引数は関数呼び出しのタイミングで渡された実引数で初期化されます。
|
136
|
+
|
137
|
+
`CTestProc::Test_One(data);`として呼び出した時、`TEST& TestData=data;`が実行されているのと等価です。
|
138
|
+
|
139
|
+
|
2
微修正
test
CHANGED
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
ptr_data=&data2; //
|
87
|
+
ptr_data=&data2; // ポイント先がdata2へ切り替わります
|
88
88
|
|
89
89
|
std::cout << "data.a=" << data.a << "\n";
|
90
90
|
|
1
微修正
test
CHANGED
@@ -8,7 +8,11 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
相違点としては、参照渡しの方ができることが少ないです。その分、安全になっていると考えて下さい。
|
12
|
+
|
13
|
+
|
14
|
+
|
11
|
-
|
15
|
+
原則としてNULLを渡すことができません。(不可能ではないですが、それなりに手間です。)
|
12
16
|
|
13
17
|
|
14
18
|
|
@@ -18,7 +22,7 @@
|
|
18
22
|
|
19
23
|
また、ポインタはポインタを記録する変数です。なので、その変数のアドレスを取ることができます。
|
20
24
|
|
21
|
-
例えば、int型変数へのポインタへのポインタへのポインタへの・・・なんて多重ポインタも作ることが可能です。(普通しませんが。)
|
25
|
+
例えば、int型変数へのポインタへのポインタへのポインタへの・・・なんて多重ポインタも作ることが可能です。([普通はしませんが](http://qiita.com/yohhoy/items/c3f898dafb3d8bc07bd1)。)
|
22
26
|
|
23
27
|
これに対して、参照は変数ではなくそのアドレスが記録されている(筈の)メモリへのポインタを作ることができません。&参照とすると、参照先の変数のアドレスになりますから。
|
24
28
|
|