void*和void**之间有什么区别?

Moh*_*ain 11 c c++ pointers

这是一个特殊的属性,void*也可以被指定一个指向指针的指针并返回并接收原始值.

我在某处读过这行.它意味着void*void**是一样的吗?有什么不同?

编辑

void*可以持有任何指针.那void**需要什么?

Tha*_*tos 53

一个人指着一个黑洞.

其他指向黑洞的东西.


它们不是真的相同,但指针可以转换为void *.你可以转换int *为a,void *因为它是一个指针.void **还是一个指针(它只是指向一个指针),并且因为它是一个指针,你可以将其转换为void *.这有什么意义吗?

也就是说,我认为我没有使用过a void **,但是如果你需要一个void *s 数组,那么类型就是void **.(在C中)void *通常用于保存指向某些用户数据的指针 - 但您不会提前知道该数据的类型.如果你有一组那些,那么void **.

因为你也有这个标记为C++:前面的情况并不真正适用:你可以使用std::vector<void *>.真的,void *可能有问题 - 抽象基础可能更适合您的目的.void *主要用于C.

  • 我使用void**作为调用传递给它的函数指针的函数的参数.在这种特殊情况下,接力棒是可变的. (2认同)

Mat*_*hen 6

void**是指向void*的指针.void*可以来回转换为任何指针类型(包括void**).所以你可以这样做:

char* -> void*
void* -> void**
void** -> void*
void* -> char*
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

char* -> void**
void** -> char*
Run Code Online (Sandbox Code Playgroud)

所以他们不一样.