下面这个函数什么意思:
1 2 3
| void* foo(void* a){ return a; }
|
他表示foo接受任何类型的指针,并输出任何类型的指针。使用方式总结如下:
1. void指针可以指向任何类型指针,但反过来就不对了
1 2 3 4
| float f = 5.5; float* pf = &f; void* pv = pf; float* pf2 = pv;
|
2.void指针只有强制转换类型后才可以取值,而且要转换成所保存地址中,内容的类型
1 2 3 4 5 6
| float x = 4; void* yv = foo(&x); cout<<yv<<" "<<*(float*)yv<<endl;
cout<<*(double*)yv<<endl; cout<<(double)(*(float*)yv)<<endl;
|
3. void指针可以使用nullptr初始化
1 2
| void* vPtr = nullptr; cout<<*vPtr<<endl;
|
4. 接受任何类型的指针,并输出任何类型的指针
1 2 3
| void* vPtr = nullptr; void* vFunPtr = foo(vPtr); cout<<vFunPtr<<endl;
|