この構造体で
typedef struct tNode_t {
struct tNode_t **a;
} tNode;
a
配列へのポイントをtNodeへの5つのポインターにできるようにしたい
メインの例:
int main()
{
tNode t;
tNode (*alpha)[5];
t.a = alpha;
}
なぜこれが機能しないのですか?
これは、tNodeの配列へのポインターを定義します。
tNode (*alpha)[5];
これは、tNodeへのポインタの配列を定義します。
tNode *alpha[5];
あなたのコードalpha
でa
は、非常に異なるオブジェクトへのポインタです。また、両方ともポインタであるため、正しく定義したように、減衰は発生しません。配列のみが減衰するためalpha
、別のポインタ型に単純に減衰することはできません。
そして、なぜそれらはそれほど異なっているのですか?aをインクリメントすると、次のを指しstruct tNode_t *
ます。インクリメントalpha
すると、さらに5ポイントになりますstruct tNode *
。