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;
}
问题在于malloc ....有人请帮帮我!!!!
答案 0 :(得分: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);
无论指针指向什么,最后一个版本都会自动分配正确的内存量。 C中不需要(nods)
强制转换。