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* porint *pと記述する(どちらも意味は同じ)。- 宣言に用いる「」と、アドレスを辿って中身を返す「」は別モノなので注意する。
*pがアドレスを返すような「ポインタのポインタ」を宣言する場合には、辿る回数だけ*を重ねて、int** porint **pと記述する。
ポインタ p の中身を printf するには、
printf("%p", p)