整个数组在C中是不可赋值的。此外,您的variable.parents是一个灵活的数组成员,这几乎肯定不是您想要的,而且在任何情况下,相应的指针类型是node **,您正试图为它分配一个node *类型的对象。 还有,宣布。。。 variable *new_variable; ... 只声明一个指针,不声明它要指向的任何对象,也不指定有效的指针值。 如何解决此问题? 这取决于你想要实现什么。以下是一些与原始代码相关的有效代码,但我不清楚它是否符合您的要求: #include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <math.h>typedef struct { struct variable *var; double grad;} node;typedef struct { double value; double grad; bool requires_grad; node **parents; // NOTE: type change} variable;variable *init_variable(double value, double grad, bool requires_grad, node **parents) { // NOTE: type