百科问答小站 logo
百科问答小站 font logo



为何void类型指针不能解引用,却可以参与强制类型转换? 第1页

  

user avatar   pansz 网友的相关建议: 
      

你理解错了,编译器知道 void * 的字节数,只是不知道 void 的字节数而已。

void * 跟 void 是两个不同的类型。

void * 的字节数就是地址字长,在64架构里它固定是 64 位长度。这一点是完全确定的。

所以,虽然 void 本身不能参与运算,但 (void *) 作为一个整体却可以参与转化,比如转化为 double(同样是64位),也可以转化为其它的什么。

每个指针本身都是一个值,只不过这个值同时还可以被解读为指向另外一个内存地址的指针而已。void * 指针本身作为一个值,完全是已知长度的确定的值类型,当然可以作为一个整体参与强制类型转换。




  

相关话题

  为什么大多数人用C++时都要用&&,||和!来表示与或非,而不是用and or not? 
  我想用Qt做一个第一视角的赛车游戏,请问我应该看哪些相关书籍? 
  如何学习递归呢? 
  C语言仅凭自学能到什么高度? 
  大一新生做C语言课设被强制要求使用 Borland C++ 3.1,此IDE相对于其他IDE有何优点? 
  写C with class很丢人么? 
  如果人生有的选,18岁的你凭实力拿到清北录取通知书和因为房产红利变成资产总量三千万的家庭,选哪个? 
  代码全是调包的,怎么申请专利? 
  内存为啥要分堆栈在编程里,要是全部只用堆或者全部只用栈,行不行? 
  int *p=new int,当free(p)时free函数是怎么知道要释放4个字节而不是5个的? 

前一个讨论
做个简单的调查,如果三体人给了你一个按钮,你必须要在中国和美国中选择一个彻底抹去,你会选择哪个国家?
下一个讨论
是否任一无穷集合都能分成两个等势的不交集合之并?





© 2025-03-14 - tinynew.org. All Rights Reserved.
© 2025-03-14 - tinynew.org. 保留所有权利