ポインタについて(1) 概要・宣言・代入・参照
C初心者には難関といわれるポインタについて勉強したいとおもいます。
ポインタってなによ??
僕がリファレンス的な教科書として使っている『C言語プログラミング』によると、
ポインタはメモリアドレスを値としてもつ変数
とのことです。
ようするに、データそのものではなく、データが格納されている変数のメモリ番地を値としてもっている変数がポインタ。
ということのようです。
変数は直接的に値を参照し、ポインタは関節的に値を参照することができます
ポインタを介して値を参照することを関節参照といいます。
ポインタの宣言のしかた
//int型の値が格納されているメモリ番地を示すポインタを宣言 int *pointer;
型宣言の中で変数名のまえに*を付けると、その変数はポインタになる
アドレスの代入の仕方
int n = 123; int *p; //変数nのアドレスをポインタpに代入する p = &p;
変数の前に"&"をつけると、その変数のアドレスを取得することができるようです。
関節参照の仕方
ポインタが示すアドレスに格納されているデータを参照するには以下のようにする。
printf("%d\n", *p); //"123"が出力される
ポインタが示すアドレスを参照したい場合は以下のようにします。
printf("%p\n", p); //16進数で表されたアドレスが出力される
int n = 346; int *p; p = &n; //nのアドレスをpに代入 //nのアドレスとpに代入されたアドレスは同じ printf("%p\n", &n); //0065FE00 printf("%p\n", p); //0065FE00
次回
次はポインタ式と、ポインタ演算/ポインタと配列について勉強します。