什么情况下用void *和void **
时间: 2023-08-15 07:06:59 浏览: 187
引用[1]: void*是一种特殊的指针类型,可以指向任何类型的地址,但是带类型的指针不能指向void*的地址。它的好处是在编程时可以实现泛型编程,节约代码量。[1] 引用[2]: 当我们需要定义一个函数,但是函数的参数类型不确定或者需要支持多种类型的参数时,可以使用void*作为参数类型。例如,void* say_hello(void* args) { cout << "Hello World!" << endl; return 0; }[2] 引用[3]: 另外,当函数的返回值不关心具体类型,只关心大小时,也可以使用void*作为返回类型。例如,void* memcpy(void *dest, const void *src, size_t len);[3] 所以,当我们需要在函数传参时不确定类型或者要支持多类型的传参,或者函数的返回值不考虑类型只关心大小时,可以使用void*和void**。
相关问题
C语言c2036错误,error C2036:'void *' : unknown size void*和void**的区别
`*`表示指向未知类型的指针,因此它可以指向任何类型的数据。它的大小在编译时是已知的。
`void**`表示指向 void* 类型指针的指针,或者说是指向指针的指针。它本身也是一个指针,指向另一个指针,因此它的大小是已知的。在使用`void**`时需要注意,因为它需要指向一个指针,所以必须先分配一个指针,再将该指针的地址传递给`void**`。
(void *)和(void **)
(void *)是一个通用的指针类型,可以指向任意类型的数据。它可以用来存储指向不同类型的指针,但在使用时需要进行类型转换。
(void **)是一个指向指针的指针类型。它可以用来存储指向不同类型指针的地址,但同样需要进行类型转换才能正确使用。
相关问题:
1. 什么是指针?
2. 为什么需要进行类型转换?
3. 如何使用(void *)和(void **)进行数据操作?
阅读全文