回答編集履歴

3

補足

2017/03/21 07:08

投稿

Chironian
Chironian

スコア23272

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

微修正

2017/03/21 07:08

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
 
87
- ptr_data=&data2; // 参照先がdata2へ切り替わります
87
+ ptr_data=&data2; // ポイント先がdata2へ切り替わります
88
88
 
89
89
  std::cout << "data.a=" << data.a << "\n";
90
90
 

1

微修正

2017/03/21 07:03

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
 
10
10
 
11
+ 相違点としては、参照渡しの方ができることが少ないです。その分、安全になっていると考えて下さい。
12
+
13
+
14
+
11
- 相違点としては、参照渡しの方ができることが少ないです。原則としてNULLを渡すことができません。(不可能ではないですが、それなりに手間です。)
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