メモリをイメージする(自分の手で図に書く)

#include<stdio.h>       
char a[2];
int b[2]; 
int main(void){
   char *p1;
   int *p2;
   a[0]='a';a[1]='b';
   b[0]=1;b[1]=2;
   p1=a;p2=b;      
   printf("p1 address:%x  %c\n",p1,*p1);
   p1++;
   printf("p1 address:%x  %c\n",p1,*p1);
   printf("p2 address:%x  %d\n",p2,*p2);
   p2++;
   printf("p2 address:%x  %d\n",p2,*p2);
   printf("sizeof p1:%d\n",sizeof(p1));
   printf("sizeof p2:%d\n",sizeof(p2));
   return 0;
}
これをコンパイルして実行すると
$ gcc -ob b.c;./b
p1 address:403020 a
p1 address:403021 b
p2 address:403030 1
p2 address:403034 2
sizeof p1:4            <<<32ビットOSではポインタ変数は常に4バイト
sizeof p2:4

まとめ、
ポインタ=指している変数のサイズとそのアドレスを入れるもの

連続が保証されている型とは、配列と構造体。構造体の配列って連続だからいい。
名前:
コメント:
最終更新:2009年12月11日 01:02
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。