| 
        * (アドレス)
 | 
の形式でデータが参照される。
| 
例4
        int a=2;
        int *p;
        p = &a;
        printf("address is %u, value is %d\n", p, *p);
 | 
上の例では、address is 1249, value is 2 のように出力される。
つまり、上の例では、*p と a とは
同じ意味になっていて、p で示されるアドレスのデータを取り出すという
意味になっている。
更に、間接参照演算子は代入にも使える。
| 
例5
        int a=3, b;
        int *p;
        p = &a;
        b = *p;
        printf("%d\n", b);
 | 
この例では、まず a のアドレスが p に代入され、次に p の
指しているアドレス(即ち a のアドレス)の中身が取り出され、b に
代入されているので、3 が出力される。
| 
例6
        int a=1;
        int *p;
        p = &a;
        printf("a is %d\n", a);
        *p = 2;
        printf("a is %d\n", a);
 | 
上の例 6 では、最初は変数 a に 1 が入っているので、
一番目の printf() では、a is 1 が出力されるのだが、その次の行
で、*p に対して 2 を代入しているのが重要である。今、ポインタ変数
p には整数変数 a のアドレスが入っているので、*p は
a と全く同じであると考えて良い。即ち、この場合は、a = 2; を
実行しているのと全く同じなのである。従って、プログラムの上では、a への
代入はないにも関らず、二番目の printf() では、a is 2  と
出力されるのである。