GUST NOTCH? DIARY

ポインタ

スラッシュドットでこんな記事が話題になっていた。

えーと、

    • ポインタは、どこかを指し示しているモノである。
    • ポインタは、指し示しているだけで、その先の領域を確保してくれるわけではない。
    • ポインタ自身も、ポインタが指し示している先も、普通はメモリ上に存在する。
    • ポインタの宣言には * をつける。 int *p; と書くと、p は int 型のポインタ。
    • pはメモリ上のどこかに存在していて、そのアドレスは &p。つまりポインタp自身も変数。
    • pはメモリ上のどこかを指し示していて、指し示している先のアドレスが p。int i=5; で宣言されたメモリの領域を指し示すためには p = &i として i のアドレスをポインタに代入する。
    • 指し示している先のアドレスにある値は *p で得られる。この場合、*p は 5。
    • ここで p は int型へのポインタなので、(p+1) は sizeof(int) 分増える。


int main(void)
{
int i=5;
int *p;

p = &i;

printf( " i = %d\n", i );
printf( "*p = %d\n", *p );
printf( "&i = %p\n", &i );
printf( " p = %p\n", p );
printf( " sizeof(int) = %d\n", sizeof(int) );
printf( " (p+1) = %p\n", p+1 );
}


$ ./a.out
i = 5
*p = 5
&i = 0xbffff884
p = 0xbffff884
sizeof(int) = 4
(p+1) = 0xbffff888

で、いいはずだよな?