C - 马洛克调试.需要解决方案


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 中不是必需的。

相关内容

  • 没有找到相关文章

最新更新