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