2019-04-28
ポインタなど覚え書き
データ構造とか C++読めるようになりたい。 いきなり C++でもいいけど、下準備としてドットインストールの C 入門をざっとやってみた。
if 文の書き方とかセミコロンとか JavaScripti に似てるな
文字列は文字 char の配列。(終端の要素が”\0”)
ある変数(x)は特定のメモリ領域(#XXXX)に対応しており、あるメモリ領域には特定の値(value_of_x)が入っている。
- たとえば n という int 型変数(∈ 変数)は#0001 というメモリ領域に対応しており、#0001 というメモリ領域には”10”という int 型の値が入っている。
ポインタもなんのことはない、変数の一種。
- たとえば p というポインタ(∈ 変数)は#0005 というメモリ領域に対応しており、#0005 というメモリ領域には”#1000”というアドレスが入っている。
&変数名
で、その変数が対応するメモリ領域のアドレスを返す。- たとえば
&n
は”#0001”を返し、&p
は”#0005”を返す。
- たとえば
*ポインタ名
で、そのポインタが指し示すアドレスに格納された値を返す。ポインタの宣言
*p
が int 型を返すようなポインタ p を宣言するには、int* p
orint *p
と記述する(どちらも意味は同じ)。- 宣言に用いる「」と、アドレスを辿って中身を返す「」は別モノなので注意する。
*p
がアドレスを返すような「ポインタのポインタ」を宣言する場合には、辿る回数だけ*を重ねて、int** p
orint **p
と記述する。
ポインタ p の中身を printf するには、
printf("%p", p)