我有一个指向固定大小整数元素数组的指针。填充该数组后,我将其分配给void*pBuff。稍后,我需要通过void指针来访问数组元素,但这样做失败了。
下面是使用C的代码:
void * pBuff = NULL;
int
set_data(void *pBuff)
{
int ptr = 10, i;
int phy_bn[8] = {0};
int (*pPB)[8];
for(i=0; i<8; i++){
phy_bn[i] = ptr;
}
pPB = &phy_bn;
pBuff = pPB;
return 0;
}
int main()
{
int i;
set_data(&pBuff);
for(i =0 ; i <8; i++){
printf("\ndata : %d\n", *(int *)pBuff[i]);
}
return 0;
}
它提示对*(int*)pBuff[i]将“void”项的错误转换为非“void”。
任何帮助都将不胜感激。
谢谢,
-山姆
最佳答案
除了您需要使用:
((int*)pBuff)[i]
代码中的内容是未定义的行为。
pBuff = pPB;
pBuff
指向函数的局部数组,它的生存期不存在于函数作用域之外。所以你有一个指针指向一些不需要存在但有时可能存在的东西。