###自己参照型をポインタ配列で表現した、2つのパターンです↓
######パターン①
typedef struct node { int ID; struct node*Link[0]; }NODE; NODE*p = (NODE*)malloc(sizeof(NODE) + sizeof(NODE*)*5);
######パターン②
typedef struct node { int ID; struct node*Link[5]; }NODE; NODE*p = (NODE*)malloc(sizeof(NODE)); for(int i = 0; i<5; ++i) p->Link[ i ] = (NODE*)malloc(sizeof(NODE));
上記のパターン②において
Link[0]〜Link[4]
には、それぞれ第二の要素「Link[ ][0]」
を含んでいる事は理解してますが、パターン①の場合は二次元目の要素は存在しないのでしょうか?
※
「第二の要素」「二次元目の要素」は、
array[X][Y]の場合の、[Y]に相当する部分です。
###試してみたこと
sizeof演算子を使って自己参照型構造体のサイズを、パターン①と②それぞれで計算してみたが、sizeof演算子は「ポインタに格納されたデータ数」を算出せず、「ポインタの型のサイズ」のみ算出してしまいます。
>パターン①の場合 NODE*p = (NODE*)malloc(sizeof(NODE) + sizeof(NODE*)*5); printf(“%d”,sizeof(p)); //結果が4になる
回答4件
あなたの回答
tips
プレビュー