簡體   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