我正在从零开始学习C++,因此我对C没有专业的了解。在C++中,您不能将void指针指向任何东西,并且我理解其背后的原因。但是,我知道在C中可以。可能的原因是什么?似乎这在类型安全性方面是一个巨大的漏洞,(对我而言)这似乎是一件坏事。

最佳答案

您可以将void*转换为两种语言的另一个指针。也许您的意思是隐含的。

在C中不必明确说明它非常方便。在C++中,我们有模板,因此编写通用代码不需要void*强制转换和其他功能。在C语言中别无选择。通用容器必须将void*保留在对象上,而重复说mydata* d = node;则容易得多,那就是mydata* d = (mydata*)node;

因此,这几乎就像您说的那样。通常,在C类型中,安全性没有像在C++中那样受到重视,特别是当涉及到void*时,因为它被认为是指向任何内容的简单通用指针。在C++中不需要这样做,因此最好在处理它时将其明确。

关于c - 强制转换为空指针的原因是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2590314/

10-11 23:22
查看更多