【新・明解C++】学習メモ(7章前半)
『新・明快C++入門』第7章(ポインタ)
7-1 ポインタ(p240~247)
アドレス演算子(&)
ポインタ
Type* 識別子 初期化子(アドレス演算子を用いる)
で宣言する。→「Type(型オブジェクト)へのポインタ」- 生成されたポインタの具体的な値はアドレス。
間接演算子(*)
7-2 関数呼出しとポインタ(p248~249)
関数の引数としてポインタを渡すことで、呼び出された関数内で
間接外しによるオブジェクトの値の変更ができる(ポインタの値渡し)。
7-3 ポインタと配列(p250~261)
基本ルール
- 配列名はその配列の先頭要素のポインタとして解釈される。
int a[5]
のa
はa[0]
のポインタとして解釈される。- pが配列aのポインタの際、
p + i
は配列aの要素a[i]
を指す。 *(p)
はa[0]
を指す。*(p+i)
はa[i]
のエイリアスであり、オブジェクトを示す。*(p + i)
はp[i]
,*(p-i
)はp[-i]
と表現できる→なぜ?
各要素をアクセスする式
- a[i]
- i[a]
- *(a+ i)
- *(i + a)
- p[i]
- i[p]
- *(p + i)
- *(i + p)
各要素を示すポインタ
- &a[i]
- a + i
- &p[i]
- p + i
7-4 ポインタによる配列要素の走査(p262~267)
- インクリメント/デクリメント演算子をポインタに対して用いると、次(前)のポインタを要素を指すように更新される。
- 同一配列内の要素へのポインタ同士を減算すると、それらが何要素離れているか算出。