回答編集履歴

2

追記

2021/11/04 16:30

投稿

int32_t
int32_t

スコア21695

test CHANGED
@@ -2,8 +2,36 @@
2
2
 
3
3
 
4
4
 
5
- ②は`p->Link[]`に確保したメモリのポインタを代入しているから`NODE`を指すようになります。①も同じようにポインタを代入すれば同じように動きます。
5
+ ②は`p->Link[]`に確保したメモリのポインタを代入しているから`NODE`を指すようになります。①も同じようにポインタを代入すれば同じように動きます。①と②は最初のmalloc()のパラメータが違うだけで、それ以外の使い方は同じです。
6
6
 
7
7
 
8
8
 
9
9
  `sizeof` 演算子はコンパイル時に決まる型のサイズを返します。`sizeof`がこの質問に役に立つかどうかは怪しいです。
10
+
11
+
12
+
13
+ ----
14
+
15
+
16
+
17
+ 質問文へのコメントを読むと、本当に欲しいものは動的に子供ノードの数が変更できるツリーのようです。
18
+
19
+
20
+
21
+ ```c
22
+
23
+ typedef struct node {
24
+
25
+ int id;
26
+
27
+ size_t children_size;
28
+
29
+ struct node* children;
30
+
31
+ } NODE;
32
+
33
+ ```
34
+
35
+
36
+
37
+ コンパイル時固定サイズの配列やメモリ確保時にサイズが決まる配列では子供ノードの数の変更ができないので、`malloc()`や`realloc()`で確保した1次元配列へのポインタをメンバに入れるとよいかもしれません。

1

文言

2021/11/04 16:30

投稿

int32_t
int32_t

スコア21695

test CHANGED
@@ -3,3 +3,7 @@
3
3
 
4
4
 
5
5
  ②は`p->Link[]`に確保したメモリのポインタを代入しているから`NODE`を指すようになります。①も同じようにポインタを代入すれば同じように動きます。
6
+
7
+
8
+
9
+ `sizeof` 演算子はコンパイル時に決まる型のサイズを返します。`sizeof`がこの質問に役に立つかどうかは怪しいです。