ポインタの宣言

char *a;

とする。間接参照演算子*とは別。

間接参照演算子*

char *a;

について間接参照演算子*を使うとその型は

aはcharのポインタ *aはchar型

アドレス演算子&

char a;

についてアドレス演算子&を使うとその型は

aはchar型 &aはcharのポインタ

ポインタと配列

宣言の仕方による違い色々

char a[5];//←配列(要素数5) char *b[5];//←ポインタの配列(要素数5) char (*c)[5];//←配列(要素数5)へのポインタ char (*d[6])[5];//←配列(要素数5)へのポインタの配列(要素数6)

ポインタと構造体

以下のような構造体test1、構造体ポインタtest2について考える。

struct TEST { char a; char b[5]; char *c; char *d[5]; char (*e)[5]; char (*f[6])[5]; }; struct TEST test1; struct TEST *test2;

それぞれの構造体のメンバへの値アクセスの方法は

test1.a=10; test1.b[0]=10; *(test1.c)=10; *(test1.d[0])=10; *(test1.e)[0]=10; *(test1.f[0])[0]=10; test2->a=10; test2->b[0]=10; *(test2->c)=10; *(test2->d[0])=10; *(test2->e)[0]=10; *(test2->f[0])[0]=10;