#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