符号(void *)何解?符号(void **)又何解??

cpp_c 2005-01-20 03:56:30
如题,谢谢!
...全文
7700 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
somedummy 2005-01-20
  • 打赏
  • 举报
回复
void*是不带类型的指针,而void**是带类型的指针,就这个不同

而对于不带类型的指针来说,不能进行算术运算,而带类型的指针就可以进行算术运算了
zhousqy 2005-01-20
  • 打赏
  • 举报
回复
void* 是说: 这是一个指针,它指向任何类型的对象.
void** 是说: 这是一个指针,它指向一个void* 型的指针.这个void *的指针又指向任何类型的对象
xue23 2005-01-20
  • 打赏
  • 举报
回复
比如找人一样。这个人是李四
void * pdes;就好像某人的住址一样。你到他家就可以找到他了。
但是他爸说,这小子已经被我卖了,成了张三的儿子。他爸告诉你张三家的住址,然后你去张三家就可以找到李四了。
张三的地址就是
void ** ppdes;

如果张三说,已经把李四又卖了武大。

于是就又要变成
void *** pppes;
...
sankt 2005-01-20
  • 打赏
  • 举报
回复
学习
coolvc2002 2005-01-20
  • 打赏
  • 举报
回复
对于多级指针或者数组,要掌握正确的识别方法:
void* 是说: 这是一个指针,去掉一个(*)就是它所指向的,在这里是指向放void型的地方;
void** 是说: 这也是一个指针,去掉一个(*)就是它所指向的,它指向一个放void*型的地方.
如下
#include <iostream>

int main(int argc,int * argv[])
{
int *i[2];
int a = 0;
int b = 1;
int *pa = &a ;
int *pb = &b;
i[0] = pa ;
i[1] = pb;
void **ppA = (void **)i;
return 0;
}
易旭昕 2005-01-20
  • 打赏
  • 举报
回复
void ** 这种用法通常在跟COM接口打交道的时候常见。

比如说现在有一个指向一个空接口的指针 pUnknow,
我们要调用某个函数使这个指针指向一个真正有用的接口。
这个函数为:

HRESULT foo(void ** ppv);
{
*ppv = new Interface();
}
它生成一个接口并获得接口指针,并修改传入的参数(指针的指针),
使得传入参数的指向的数据(指针)等于这个接口的指针。

调用如下:
foo(reinterpret_cast<void **>(&pUnknow));
daylove 2005-01-20
  • 打赏
  • 举报
回复
还上看看
sharkhuang 2005-01-20
  • 打赏
  • 举报
回复
理解意思void ***你也知道^_^
lu1172101275 2005-01-20
  • 打赏
  • 举报
回复
来晚了
kobefly 2005-01-20
  • 打赏
  • 举报
回复
楼上正解
(void *)fun(int a);
函数返回一个指针,是void类型
(void **)fun(int a);
函数返回一个2级指针,是void **类型

一级指针是找到地址,然后取得这个地址的值
2级指针是找到地址,然后找到地址的内容的地址,然后再取得这个地址的值
cpp_c 2005-01-20
  • 打赏
  • 举报
回复
谢谢大家生动的回答啊:)
Zark 2005-01-20
  • 打赏
  • 举报
回复
void* 是说: 这是一个指针,它指向的对象未知.
void* 是说: 这是一个指针,它指向一个void* 型的数据结构.
qiushuiyingying 2005-01-20
  • 打赏
  • 举报
回复
xue23(xue23)正解
qufan 2005-01-20
  • 打赏
  • 举报
回复
coolvc2002(cool_vc)
说的方法很实用啊,呵呵
一般来说对指针访问一般(也可以说必须知道指针的类型)
比如你获得一个指针的内容,你必须根据它指向的对象的类型信息来访问该对象
所以说,一个void类型的指针可以赋值给任意指针,但任意指针不得赋值void指针哈
(丢失类型信息哈)
所以常可以看到函数访问的返回值为void指针的
呵呵,具体怎么用看具体情况咯(一句废话!!!!)
luoyu971 2005-01-20
  • 打赏
  • 举报
回复
study
r_swordsman 2005-01-20
  • 打赏
  • 举报
回复
void* 可以和任何类型相互转换的指针
void** 就是指向上面那类型的指针啦~~
常见的是malloc就是返回void* 类型~~这样就可以转换为其他类型~~

65,195

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧