今天看到一段代码,觉得非常有意思。
void* say_hello(void* args) { cout << "Hello World!" << endl; return 0; }
这里的返回类型竟然是void*。一般来说如果没有返回值,那么写一个void就行了,void*到底是什么样的存在?所以做了一些测试,总结了一些void*指针的用法。
1)void*可以指向任何类型的地址,但是带类型的指针不能指向void*的地址
正常来说如果两个指针类型不一样的话,两个指针变量是不可以直接相等的。例如int* a, float* b,假如令a = b,会直接发生编译错误,而void*指针可以等于任何类型的指针。但是反过来不可以,也就是说一个有类型的指针不能指向一个void*类型的变量(哪怕此时void*变量已经指向了一个有类型的地址)。
float f = 5.5; float* pf = &f; void* pv = pf; float* pf2 = pv;//编译错误,有类型的指针变量不能指向void*变量
2)void*指针只有强制类型转换以后才可以正常取值
int main(