void*指针

void*是一种特殊的指针类型,可以用于存放任意类型的对象地址.但是我们不知道该指针着存放的地址指向的对象的类型.

1
2
3
4
int d = 102;
void *p = &d;
int *pa = static_cast<int *>(p);
cout << *pa << endl; // 102

将指针p强制为int*类型,强制转换过程中应该确保指针的值即指针指向的对象地址不变; 因此我们进行强制转换时,必须确保转换的目标类型就是指针所指的类型,否则,将产生未定义的结果.

那么什么时候使用void*指针呢?未完待续