C/C++ユーザの皆様。ポインタって忘れません?(多分私だけ)
毎回忘れて調べなおすのも嫌になってきたので、超初歩の部分だけですがまとめました。(動的メモリ確保とかは今回扱いません。ポインタの入り口だけ)
最初にサンプルコードを載せます
#include <iostream>
using namespace std;
int main(){
int num = 15;
int* p = #
int& q = num;
cout << "num = " << num << endl;
cout << "p is " << p << endl;
cout << "*p is " << *p << endl;
cout << "q is" << q << endl;
cout << "&q is " << &q << endl;
return 0;
}
そして以下がサンプルコードを実行した際の標準出力です。
num = 15
p is 0x7ffff1ab9534
*p is 15
q is15
&q is 0x7ffff1ab9534
以上から以下のことがわかります
- p → アドレスが入る変数
- *p → pに格納されているアドレス先の中身
- &q → アドレスが入る変数
- q → &qに格納されているアドレス先の中身
基本的に記号を付けるタイミングさえ間違えなければまったく同じ動作が出来ます。
ただ違うのは宣言時にアドレスを代入するのか、変数を代入するのか。
アドレスが入る変数 | アドレス先の中身 | |
int *p | p | *p |
int &q | &q | q |
ちなみに型指定子と変数名の間に記号があればいいので、
こんなのとか↓
int *p = #
こんなのも↓OK(読みやすい形にして or コーディング規約があるなら規約に則って 使いましょう)
int & q = num;
コメント