![](/img/trans.png)
[英]how can I iterate through an array of generic type (void**) in with function pointer in C?
[英]Can I use a void pointer in C as an array?
我尝试在C中执行此操作,它崩溃了:
int nValue=1;
void* asd;
asd[0]=&nValue;
出现以下错误:
*error C2036: 'void**' *: unknown size
error C2100: illegal indirection*
我可以在C中将void指针用作数组吗?
如果可以的话,正确的方法是什么?
我可以在C中将void指针用作数组吗?
不。 您可以在void*
进行转换,但不能推论它,并且在考虑它时是有意义的。
它指向未知类型,因此大小也未知。 因此,您可能无法对其执行指针算术( asd[0]
这样做),因为您不知道要从基本指针偏移多少个字节,也不知道要写入多少个字节。
附带说明一下, asd
(可能)指向无效的内存,因为它尚未初始化。 编写或读取它会调用未定义的行为。
您可以这样写:
int main()
{
int iv = 4;
char c = 'c';
void *pv[4];
pv[0] = &iv;
pv[1] = &c;
printf("iv =%d, c = %c", *(int *)pv[0], *(char *)pv[1]);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.