繁体   English   中英

我可以在C中将void指针用作数组吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM