我是新的C,这是我的第一个问题: 为这种结构:指向struct的指针数组中的指针,如果设置为NULL,是否分配内存?
typedef struct Branch
{
Tree * thisTree;
struct Branch * nodes[];
} Branch;
看来,如果我做做工精细如下:
Branch branch1;
branch1->nodes[0] = NULL;
即使我做用于指针NR 0阵列中的未分配内存这种方式:
branch->node[0] = (Branch *) malloc(sizeof(Branch *));
如果我检查与此代码:
if (branch1->nodes[0] == NULL)
printf("is NULL");
它输出到输出:是NULL
所以我的问题是: 已经存在已为指针分配的内存?
branch1->nodes[0]
,因为我有很多的结构,如果我初始化每个分支有固定数量的指针,我得到了很多分配的数据(如果我用的sizeof功能检查)。 就是这样:设置为NULL(上面)的思路错误?
我的问题是,指针的内存分配是4个字节。因此,在数组中没有声明的指针数量,它何时为它分配内存? 对不起 我试图保持这个问题简单,但我需要通过结构指针的下一个分支达到一个字符串
这意味着我用的结构是
typedef struct Branch
{
Tree * thisTree;
char *string;
struct Branch * nodes[];
} Branch;
所以,如果我不
branch->node[0] = (Branch *) malloc(sizeof(Branch *));
,比
branch->node[0]->String = strdup("text");
我ge编译器错误。
不要在C. – Olaf
你做投malloc'和朋友的'结果。 C不是Java或Python等。指针不是引用,而是第一类对象。使用valgrind。如果你不这样做,简单的比较甚至可能会奏效,你不能依赖_undefined behaviour_ ** not **来产生正确的结果。 – Olaf
我喜欢那些演员。 –