printf("address is %u\n", &a);
int *p; int *x1, *x2; char *pc;変数の前に、
*
を置くと、ポインタ変数になる。
char *s = "this is a test";この場合、ポインタ変数
s
には、"this is a test"
という文字列の
メモリ中でのアドレスが格納され、最初の this の 't' へのポインタになっている。
'\0'
としてあらわす。
*
int *p, x; x=12; p=&x; /* p は x をポイントしている */ *p=13; /* x の中身に 13 が代入されている */
int *pi, x; char *pc, c; pi=&x; pc=&c; pi++; pc++;この場合、
pi++
と pc++
とでは増え方が違っている。つまり、
ポインタ変数の加減乗除は、アドレスを加減するのではなく、データ型の大きさ分の
加減乗除を行うようになっている。そのために、pi++
は、整数型変数一個
分の大きさだけアドレスを増やし、pc++
は、文字型変数一個分の大きさだけ
アドレスを増やす結果となる。