int e = 5, * ePtr = &e;
void * vPtr = ePtr;
cout << *vPtr;
语法错误:
`void*'不是指向对象类型的指针
我知道:
- 任何指针类型都可以在没有显式转换的情况下存储在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;`` - chris