【发布时间】:2019-12-06 15:30:15
【问题描述】:
所以我在 void 中处理 malloc。我有一个代码:
int iInitRandomPhaseArrays(WS_ELEMENT *Aufbau, RANDOMSTRUCT **random)
{
WS_ELEMENT *Act;
int iCounter = 0, i;
RANDOMSTRUCT *dummy;
Act = Aufbau;
if (*random != NULL)
return -1;
while (Act != NULL)
{
if (Act->operation == Linsenarray)
iCounter++;
Act = Act->pNext;
}
if (iCounter)
{
dummy = malloc(iCounter * sizeof(random));
ran1_3ARG(&ran1_idum, &ran1_iy, ran1_iv);
dummy[0].idum = ran1_idum;
dummy[0].iy = ran1_iy;
memcpy(dummy[0].iv, ran1_iv, sizeof(ran1_iv));
for (i = 0; i < iCounter; i++)
ran1_3ARG(&dummy[i].idum, &dummy[i].iy, dummy[i].iv);
dummy[0].Anzahl = iCounter;
*random = dummy;
}
return iCounter;
}
这里错误:
“void *”类型的值不能分配给“RANDOMSTRUCT *”类型的实体
谁能帮我解决?
【问题讨论】:
-
看起来您可能正在尝试像编译 C++ 代码一样编译 C 代码。
-
C 语言允许将
void *自动转换为任何其他类型的数据指针(例如从malloc()获得的数据指针),但 C++ 需要显式转换。 -
我觉得应该是
sizeof(**random) -
@PunyCode 或者只是
dummy = malloc(iCounter * sizeof(*dummy));,所以你不必找出正确的类型。