11. ポインタの基礎
• オブジェクトとは、
変数の定義やnew-式などによって
メモリ上に確保され占有された
領域のこと
“オブジェクトはdefinition(3.1), new-式(5.3.4), あるいはimplementation(12.2)によって作成される” (1.8/1)
“a most derived objectは0ではないサイズを持ち、1byte以上の領域をメモリ上で占有する。” (1.8/5)
Working Draft, Standard for Programming Language C++ (N3337) より。
12. int main()
{
int i;
}
この時、変数iはint型のオブジェクト。
たとえば変数iはメモリ上で0x7fff5fbfea54から
始まる数バイトの領域を占有している。
(アドレスは実行毎に変わりうる)
13. int main()
{
int i;
}
この占有しているサイズは型ごとに
固有で、sizeof(type)で取得できる。
intが4バイトの処理系では、
sizeof(int)は4を返し、
変数iは0x7fff5fbfea54から始まる4バイトの領域
を占有する。
81. ポインタとconst
• ポインタというオブジェクト
自体のconst性
int main()
{
! int i = 3;
! int j = 3;
! int * const pi = &i;
//piに変数iのアドレスを設定
! pi = &j; //コンパイルエラー。
! //piの値は変更できない。
}
82. ポインタとconst
• ポインタが指すオブジェクト
へのconst性
int main()
{
! int i = 3;!
! int const * pi = &i;
! *pi = 4; //コンパイルエラー。
! //constなオブジェクトは変更できない。
}