当前位置:  开发笔记 > 程序员 > 正文

在C中使用void*指针的缺点

如何解决《在C中使用void*指针的缺点》经验,为你挑选了2个好方法。

void *在C中使用有许多缺点(与内存相关,类型相关,效率明智......).尽管如此,我们还是使用它们来提供灵活性.

列出使用的缺点/缺点void *(以及C中的首选解决方案 - 如果可能的话).

编辑: 请通过以下链接:http: //attractivechaos.wordpress.com/2008/10/02/using-void-in-generic-c-programming-may-be-inefficient/



1> qrdl..:

void指针没有效率问题.void指针的唯一限制是:

出于显而易见的原因,你无法取消引用void指针

sizeof(void) 是非法的

你不能在void指针上执行指针算术

但是GCC假设它sizeof(void)是1并允许指针算术在void指针上 - 见这里


sizeof(void*)不是非法的,AFAIK.但是,sizeof(void)毫无意义.

2> Norman Ramse..:

我不同意这个问题的前提.我们在C中使用void*,因为它是获得多态的唯一方法.示例:库函数qsort和bsearch.只有一个缺点,即基于void*的多态性是不安全的:一旦你将指针强制转换为void*,就没有什么可以阻止你错误地将void*转换为错误的指针类型.我的学生经常犯这个错误.

可能存在效率成本,因为有时需要分配堆空间以使用多态数据结构.

任何想要看到使用void*的多态数据结构的优点和权衡的人都应该得到Dave Hanson的书C接口和实现的副本

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有