1 #include <stdio.h> 2 3 int main(void) 4 { 5 int *p1, *p2, *p3, *p4; 6 int i1=111, i2=222; 7 8 p1=&i1; 9 p2=&i2; 10 11 p3=p1+3333; 12 p4=p1-4444; 13 14 return 0; 15 }
1 #include <stdio.h> 2 3 int main(void) 4 { 5 int *p1, *p2, *p3, *p4; 6 int i1=111, i2=222; 7 8 p1=&i1; 9 p2=&i2; 10 11 p3=p1*3333; 12 p4=p1/4444; 13 14 return 0; 15 }
ポインターに加算される整数は,ポインターが指し示すデータの移動量を表す.ひとつの
アドレスには1バイトのデータが格納できる.そして,文字型のデータでは1バイト,整数
型では4バイト,実数型では8バイトのメモリーである.これが,型に依存して,アドレス
の変化の仕方が異なった理由である.
1 #include <stdio.h> 2 3 int main(void) 4 { 5 char *cp; 6 int *ip; 7 double *dp; 8 int i; 9 10 for(i=0; i<4; i++){ 11 printf("%d %p\t%p\t%p\n",i, cp+i, ip+i, dp+i); 12 } 13 14 return 0; 15 }
0 0xbff0eb9c 0xbff0eb08 0x8048416 1 0xbff0eb9d 0xbff0eb0c 0x804841e 2 0xbff0eb9e 0xbff0eb10 0x8048426 3 0xbff0eb9f 0xbff0eb14 0x804842e