ポインタ、アドレス

#include <stdio.h>
main () {
        int a[5] = {1,2,3,4,5};
        int *p;
        int i;
        p = a; //配列の先頭ポインタを取得 p = &a[0]の省略形

        for (i = 0; i < 5; i++)
        {
                printf("%d\n",*(p+i));
                printf("%d\n",p+i*5/2);
        }
}
  • ポインタを使って、ポインタが指しているaの中身を表示させるとともに、そのアドレス(の先頭)も表示させている。アドレスに整数として1加えるとアドレスの値は4増える。上のように5/2を加えると、1回目は整数2に相当するアドレス数値8増え、2回目は整数5−2=3に相当するアドレス数値12増えている。
  • このようなポインタのメリットは?→たとえばこちら
ryamada@CFS10 ~
$ ./pointer.exe
1
2665540
2
2665548
3
2665560
4
2665568
5
2665580

ryamada@CFS10 ~