C++の参照とポインタの使用
2388 ワード
前言
初心者としては、引用とポインタが難しいということではなく、彼らの定義と使用の仕方が非常に迷惑であり、
参照
通常は参照を定義します.このものは意味が多くて、紛らわしいです.このために専門的にテストを書いて、これらの記号はいったい何のために使われていますか?
参照を使う
ポインタの使用
おわりに
指針と引用の知識は基礎的なものです.よく混同します.彼らを知るために、まず定義と使い方をはっきりさせます.深い知識もまだ分かりません.とりあえず、基礎をはっきりさせてください.間違いないです.
初心者としては、引用とポインタが難しいということではなく、彼らの定義と使用の仕方が非常に迷惑であり、
&
を使うべきか、&
を使うべきか、*
を使うべきか、*
を使うべきではないか、これは非常に困惑しています.テスト方法を書いてテストします.どうやって使うのか見てみます.参照
通常は参照を定義します.このものは意味が多くて、紛らわしいです.このために専門的にテストを書いて、これらの記号はいったい何のために使われていますか?
int v = 10;
int &vv = v;
std::cout << "vv:"<< vv << std::endl;
std::cout << "&vv:" << &vv << std::endl;
std::cout << "&v:" << &v << std::endl;
出力は:vv:10
&vv:0x7fff5704e9fc
&v:0x7fff5704e9fc
vは一つのint値であり、&
は一般的に、一つのアドレスを取る動作を示す.C+++を勉強したばかりで、すべての&を住所として考えやすくなります.そうすると、引用を表す時、大きな問題があります.一つの引用を定義するときは、&引用を表します.他の意味はありません.住所を取ると思ったら、あなたはあいまいになります.int&v v=vは誤解されます.vvを取る住所はvです.vはここで10です.vvの住所は10です.これは明らかに間違っています.この時は、引用の定義だけを表しています.他の意味はありません.使う時はそのままvv
を使えばいいです.v vは直接vを表しますが、&vvはvvが指すアドレスを表します.&vvと&vプリントの住所は同じです.参照を使う
vv = 20;
std::cout << "vv:" << vv << std::endl;
std::cout << "&vv:" << &vv << std::endl;
std::cout << "v:" << v << std::endl;
出力:vv:20
&vv:0x7fff5704e9fc
v:20
vv
を直接使用すれば、直接に値が付与されることが見られます.使用する場合:&vv=20; // , 20 , 。
ポインタ*
は、一般的に、アドレスに対応する値を取り出すという意味です.コードを先に見ますint t = 10;
int *p = &t;
std::cout << "p:" << p << std::endl;
std::cout << "*p:" << *p << std::endl;
出力:p:0x7fff5704ea0c
*p:10
ポインタの定義と賦課は参照とは違っています.int *p = &t
という文を見て、右側&tはtを取った住所を表しています.右側は住所で、左も住所です.実質的にint*pの中で、int*はpのタイプなので、割り当てられたのは実質的にpで、つまりpはtのアドレスです.これではっと悟った.ポインタの使用
*p = 200;
std::cout << "p:" << p << std::endl;
std::cout << "*p:" << *p << std::endl;
std::cout << "t:" << t << std::endl;
出力:p:0x7fff5704ea0c
*p:200
t:200
ポインタの使用は簡単であるべきです.pはあなたが理解しているという意味です.pのアドレスに対応する値を指しています.この時pはtです.*pは200を割り当てた以上、tも200を割り当てられました.おわりに
指針と引用の知識は基礎的なものです.よく混同します.彼らを知るために、まず定義と使い方をはっきりさせます.深い知識もまだ分かりません.とりあえず、基礎をはっきりさせてください.間違いないです.