单纯讨论void**或void*的含义是没有意义的。和实际需要结合才行。
解决方案 »
- 关于WinExec参数
- 怎么实现一个MFC对话框大小随上面字的多少变化
- ATL的字符串处理,比如截取、查找什么的?
- Local Settings里面的文件扫描不到怎么办
- 关于绘制矩形的问题
- 关于发送邮件,高手快来帮帮忙啊!谢谢
- 急:如何改计算机名?SetComputerName?SetComputerNameEx
- 一道来自爱因斯坦出的测试题,,他说世界上有98%的人回答不出,看看你是否属于另外的2%。我已经做出来了,看看还有没有人做出来,其实很
- 如何把文件夹里的文件全部删除。
- HEAP[test.exe]: Invalid allocation size - 90909048 (exceeded 7ffdefff)
- 自己做一支2像素宽的黑色画笔,把它选入用来画图怎么办?
- SC_MONITORPOWER这个常数的值是多少
LPVOID是mfc定义的数据类型,指针是一个空类型,同void*
例如
int **ival;
int i[3][3];
ival=&i;
*ival是指向i[0][0],也就是数组的第一个元素
而ival是指向数组的第一列的第一个元素,ival+1就是指向数组第二列的第一个元素.
或者麻烦你举一个使用void **的例子,
分不够再加
_Class1 *pClass = NULL;
IUnknown *pUnk = NULL;
HRESULT hr = CoCreateInstance(CLSID_Class1,NULL,CLSCTX_INPROC_SERVER,
IID_IUnknown,(void **)&pUnk);
hr = pUnk->QueryInterface(IID__Class1,(void **)&pClass);
pUnk->Release();实际上是传一个指针的地址,在函数内部实现中,由于根据输入不同而返回的指针实际类型不同,只能用void**,而不能用[某类型]**来传入。
用void**来传递指针地址是颇有争议的,因为这隐含着不安全因素。
明白了
不过为什么不直接传递(void *) pUnk?而要搞成(void **)&pUnk 呢?
(void **)&pUn把pUn的地址传入。