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



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

  

user avatar   pansz 网友的相关建议: 
      

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

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

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

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

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




  

相关话题

  在c语言当中,for循环,for(i=0;i<10;++i)与for(i=0;i++<10;)啥区别? 
  如何评价某985老师所说的「C语言至少学10年才能懂」? 
  DOS 界面是如何制作的? 
  malloc申请的内存能是虚拟内存吗,也就是申请的一块新的空间,刚申请就缺页吗? 
  C++ 的 switch 为什么不自动加 break? 
  C++在面向对象编程中,非虚继承和非虚析构函数的存在是为了解决什么问题? 能否都用虚继承和虚析构函数? 
  各位老铁,谁有能免费使用的学习c语言的编程软件推荐一下,本人万分感谢? 
  既然有 memcpy_s 这种安全实现,为啥不禁用危险的 memcpy 或者更新 memcpy 源码? 
  为什么C语言整型常量十进制形式的类型与八进制、十六进制的不一样? 
  有 C 语言基础,选择 C#、C++、Java、Swift 中的哪一个进一步学习更合适? 

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





© 2025-06-04 - tinynew.org. All Rights Reserved.
© 2025-06-04 - tinynew.org. 保留所有权利