C 分配给结构的指针类型不兼容
我只是想做一些指向“Nall”结构的指针,所以我写了这段代码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 **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*
。