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