c# - void** 的含义是什么?

标签 c# c++ c com

当我在 COM 中开发时,我总是看到 (void**) 类型转换如下。

QueryInterface(/* [in] */ REFIID riid,/* [out] */ void** ppInterface)

它的确切含义是什么?

恕我直言,它告诉编译器不要强制类型验证,因为 ppInterface 指向的类型在编译时客户端代码不知道。

谢谢~~~

更新 1

我是这样理解的:

void* p 暗示 AnyType* p

void ** pp 暗示 指向 AnyType*

的指针

更新 2

如果 void**pp 表示“指向 void* 的指针”,那么编译器在看到它时会进行哪些检查?

最佳答案

void ** 是指向 void * 的指针。这可用于传递将用作输出参数的 void * 变量的地址 - 例如:

void alloc_two(int n, void **a, void **b)
{
    *a = malloc(n * 100);
    *b = malloc(n * 200);
}

/* ... */

void *x;
void *y;

alloc_two(10, &x, &y);

关于c# - void** 的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3500018/

相关文章:

c# - 如何从字符串中去除非 ASCII 字符? (在 C# 中)

c++ - Winsock - 非阻塞套接字 : send returning 10035

c - 在 C 中查找 N 个整数中最大整数的数量

C编程: Sorting Structures with two parameters

C:使用双指针的矩阵乘法

c# - 将错误传递回调用代码的正确方法

c# - 如何在 winform 和 wpf 中以编程方式进行鼠标移动、单击、右键单击和按键等操作?

c# - ThreadPoolConsumerPool 中的 MassTransit NullReferenceException

c++ - 使用 SWScale 的 FFMpeg RGB32 到 NV12

c++ - 如何通过用户提示退出 switch case 实现?