当前位置:神舟问>百科知识>C语言void 指针有什么用

C语言void 指针有什么用

2023-08-07 19:58:33 编辑:join 浏览量:542

C语言void 指针有什么用

void*指针可以指向任何对象类型,可以称为是泛型的对象指针(尽管void不是对象类型)。

有时候,只能明确应该传入或返回一个指针,但不确定指针指向的类型时,就应该用void*。如果用具体的指针,虽然也是可以实现所要的功能,但会需要一次显式类型转换,这显然更麻烦,而且使程序不清晰。

举个例子:

stdlib.h中的标准库函数memcpy用来复制指定长度的一片存储器区域,它的原型为

void* memcpy(void*, const void*,...

有时候很有用的,比如WIN消息的转发,线程之间参数的传递,数据在内存中的存贮等。打个比方,有一函数为char* ToString( int type, void* data),如果type为1是,data需要指向一个结构体指针,如果type为2时,data需要指向一个类的指针,如果……。如果给你写这么个函数,你该怎么写?当然,还有其他更好的方法。

像开辟空间的malloc函数,他的返回值是一个void型的指针,因为它开辟的内存空间后,指向它说开辟的内存空间的指针指向的类型是多样的... 然后再强制转换成所指向对象的指针...

简单的说,最好用就是把它作为函数形参使用!

void * 以定义一个指针变量,但不说明它指向哪一种类型数据.

1. 传参:通用类型

可以作为函数模板,链表等参数的通用参数。在使用时,只需要强制类型转换就可以。

2.强制类型转换

有时候由于重载等的干扰,导致需要转换成void *,来进行取地址。

例如,(void *)obj.member,就可以取到member的地址;直接&(obj.member)取到的实际上是obj的开始地址。

3.指向0的地址

(void *)0,指向全是0的地址,相当于N...

标签:C语言,void,指针

版权声明:文章由 神舟问 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.shenzhouwen.com/article/152461.html
热门文章