ポインタの宣言
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;