カワサキの技術ブログ

エンジニア志望によるゆるゆる備忘録。

【新・明解C++】学習メモ(7章前半)

『新・明快C++入門』第7章(ポインタ)

7-1 ポインタ(p240~247)

アドレス演算子(&)

  • &(オブジェクト)でオブジェクトのアドレスを取得できる。
  • アドレスを取得する演算子というよりかは、ポインタを生成する演算子

ポインタ

  • Type* 識別子 初期化子(アドレス演算子を用いる)で宣言する。→「Type(型オブジェクト)へのポインタ」
  • 生成されたポインタの具体的な値はアドレス。

間接演算子(*)

  • *識別子(ポインタ)で識別子の指すオブジェクトを示す。
  • a はaのエイリアス(別名)になる。 ポインタに間接演算子を用いて処理することを参照外しという。

7-2 関数呼出しとポインタ(p248~249)

関数の引数としてポインタを渡すことで、呼び出された関数内で
間接外しによるオブジェクトの値の変更ができる(ポインタの値渡し)。

7-3 ポインタと配列(p250~261)

基本ルール

  • 配列名はその配列の先頭要素のポインタとして解釈される。
  • int a[5]aa[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)

  • インクリメント/デクリメント演算子をポインタに対して用いると、次(前)のポインタを要素を指すように更新される。
  • 同一配列内の要素へのポインタ同士を減算すると、それらが何要素離れているか算出。

参考文献