C 分配给结构的指针类型不兼容

C 分配给结构的指针类型不兼容,c,pointers,struct,C,Pointers,Struct,我只是想做一些指向“Nall”结构的指针,所以我写了这段代码 Nall **headall; headall = malloc (30000 * sizeof (Nall)); for (i = 0; i < 30000; i++) { *(headall+i) = newNall; } Nall**headall; 水头=malloc(30000*sizeof(Nall)); 对于(i=0;i

我只是想做一些指向“Nall”结构的指针,所以我写了这段代码

Nall **headall;
    headall = malloc (30000 * sizeof (Nall));
    for (i = 0; i < 30000; i++) {
        *(headall+i) = newNall;
    }
Nall**headall;
水头=malloc(30000*sizeof(Nall));
对于(i=0;i<30000;i++){
*(headall+i)=newNall;
}
现在我得到了这个错误

“警告:分配给
Nall*
(又名
struct nodeall*
)来自
Nall*(void)
(又名
struct nodeall*(void)
)[-Wincompatible指针类型]
*(headall+i)=newNall;


根据编译器警告,我假设
newNall
实际上是一个分配新
struct nodeall
并返回指向它的指针的函数。在这种情况下,您的代码应该如下所示:

Nall **headall;
headall = malloc(30000 * sizeof *headall);
for (i = 0; i < 30000; i++)
  headall[i] = newNall();
Nall**headall;
水头=malloc(30000*sizeof*headall);
对于(i=0;i<30000;i++)
headall[i]=newNall();

注意编译器警告中
sizeof
运算符的参数和
newNall

后面的括号。我假设
newNall
实际上是一个分配新的
struct nodeall
并返回指向它的指针的函数。在这种情况下,您的代码应该如下所示:

Nall **headall;
headall = malloc(30000 * sizeof *headall);
for (i = 0; i < 30000; i++)
  headall[i] = newNall();
Nall**headall;
水头=malloc(30000*sizeof*headall);
对于(i=0;i<30000;i++)
headall[i]=newNall();

注意
sizeof
运算符的参数,以及
newNall
后面的括号

如何定义
newNall
?它是一个变量还是一个函数?您的分配是可疑的
headall
具有类型
Nall**
,但您可以根据类型
Nall
计算分配的大小。人们通常希望根据
headall
所指向类型的大小来计算,即
Nall*
。如何定义
newNall
?它是一个变量还是一个函数?您的分配是可疑的
headall
具有类型
Nall**
,但您可以根据类型
Nall
计算分配的大小。人们通常希望根据
headall
所指向类型的大小来计算,即
Nall*