的代碼顯示這些行以下錯誤:C++解除引用一個空指針,轉換INT PTR作廢的ptr
int e = 5, * ePtr = &e;
void * vPtr = ePtr;
cout << *vPtr;
語法錯誤:
`void*' is not a pointer-to-object type
我知道:
- 任何指針類型可以存儲在void指針類型中,不需要顯式強制轉換
- 解引用嘗試void指針是語法錯誤
但是如果我們不能做點#2,除了語法上正確之外,點#1的用法是什麼?我想用vPtr
打印5(即e
)..這可能嗎?
這工作得很好:
int e = 5, * ePtr = &e;
void * vPtr = ePtr; //specific to generic Ok!
double * dPtr = (double *)vPtr; //to let compiler know stoarge size
cout << *dPtr; //indirectly it is vPtr i.e. a void ptr, can be deref only if cast
'void *'幾乎專門用於存儲任何指針,因此您可以將它轉換回正確的類型並使用它。而且它更多的是C編碼風格。 – chris
嘗試使用投射void * vPtr =(void *)ePtr; – ahmedsafan86
@Ahmedsafan,你正在尋找反引號:'\'void * vPtr =(void *)ePtr;'' – chris