在学习C++网络编程的时候发现会用到很多LPVOID的指针,很陌生,然后就了解了一下。
360百科:LPVOID是一个没有类型的指针,也就是说可以将任意类型的指针赋值给LPVOID类型变量,然后在使用是转换回来。
示例代码:
#include<iostream>
using namespace std;
int main()
{
int a = 100;
void* aa = &a;
int* b = (int*)aa;
cout << "point address(aa);" << aa << endl;
//cout << "test:" << *aa << endl;
//错误提示:表达式必须是指向完整对象类型的指针(aa)。
cout<<"point address(b):" << b << endl;
cout << "the value:" << *b << endl;
float* c = (float*)aa;
cout << "转换为float类型:"<<c << endl;
//发现转换成除int型之外的类型的时候,得到的值都是指针的地址
return 0;
}
结果:
point address(aa);0137F900
point address(b):0137F900
the value:100
转换为float类型:0137F900
注意:如果将cout << "test:" << *aa << endl;
注释取消,将出现错误: