ポインタの宣言

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;