首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >虚空*和虚空**的心理模型?

虚空*和虚空**的心理模型?
EN

Stack Overflow用户
提问于 2011-04-08 07:41:03
回答 5查看 904关注 0票数 19

注意:我是一个经验丰富的C++程序员,所以我不需要任何指针基础。只是我从来没有和void**合作过,很难让我的心理模型适应void*void**。我希望有人能用一种很好的方式来解释这一点,这样我就能更容易地记住语义。

考虑以下代码:(使用例如VC++ 2005进行编译)

代码语言:javascript
复制
int main() {
  int obj = 42;
  void* ptr_to_obj = &obj;
  void* addr_of_ptr_to_obj = &ptr_to_obj;
  void** ptr_to_ptr_to_obj = &ptr_to_obj;
  void* another_addr = ptr_to_ptr_to_obj[0];
  // another_addr+1; // not allowed : 'void*' unknown size
  ptr_to_ptr_to_obj+1; // allowed
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-08 07:45:26

void*是指向某些事物的指针,但您不知道是什么。因为你不知道它是什么,你不知道它占用了多少空间,所以你不能增加指针。

void**是指向void*的指针,所以它是指向指针的指针。我们知道指针占用了多少空间,所以我们可以增加void**指针来指向下一个指针。

票数 33
EN

Stack Overflow用户

发布于 2011-04-08 07:45:15

void*指向编译器未知类型的对象。

void**指向存储这样一个void*的变量。

票数 7
EN

Stack Overflow用户

发布于 2011-04-08 07:45:49

void *可以指向任何东西(函数除外)。所以它甚至可以指向指针,甚至可以指向其他void *对象。

void **是指向void *的指针,因此只能用于指向void *对象.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5591994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档