typedef struct nodes* nods;
struct nodes
{
int field,grammi,stili,flag1,flag_gv,height;
nods d,r,l,u;
};
...
int j;
struct nodes kefelement[30];
kefelement=(nods)malloc(30*(sizeof(struct nodes)));
for ((j=0); (j<30); j++)
{
kefelement[j].r=NULL;
kefelement[j].d=NULL;
kefelement[j].grammi=j+1;
kefelement[j].stili=j+1;
kefelement[j].field=0;
kefelement[j].u=NULL;
kefelement[j].l=NULL;
kefelement[j].flag1=0;
kefelement[j].flag_gv=0;
kefelement[j].height=0;
}
问题出在马洛克身上。有人请帮帮我!!!
struct nodes kefelement[30];
kefelement = (nods)malloc(30*(sizeof(struct nodes)));
kefelement
是一个数组。编译器将分配一个可通过名称 kefelement
访问的内存区域。请注意,此名称不是可以分配新值的指针。但是,在表达式中使用 kefelement
会将名称转换为指向其第一个元素的指针(有一些例外(。
如果要为数组分配动态内存,则需要将其声明为指针:
struct nodes *kefelement;
kefelement = (nods)malloc(30*(sizeof(struct nodes)));
或更好:
kefelement = malloc (30 * sizeof *kefelement);
最后一个版本会自动分配正确的内存量,而不考虑指针指向什么。(nods)
转换在 C 中不是必需的。