C++编程知识:什么是万能指针?详解C语言万能指针的妙用

本文介绍了C语言中的void关键字,特别是void*指针的使用。void*可以用于封装任意类型数据,常见于内存操作函数,并且在减少因数据类型变化导致的重复代码方面发挥作用。通过示例展示了如何利用void*实现数据类型的抽象,强调了掌握这种编程技巧的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单认识一下void

今天跟大家介绍的知识是C语言中的void关键字的用法,void在大部分小伙伴的程序中都只是用于函数无参数传入,或者无类型返回。然而我们平时所定义的变量都会有具体的类型,int,float,char等等,那是否有void类型的变量呢?答案是:不行,编译会出错。如下测试代码:

上图很明显编译器不允许定义void类型的变量,变量都是需要占用一定内存的,既然void表示无类型,编译器自然也就不知道该为其分配多大的内存,于是造成编译失败。虽然void不能直接修饰变量,但是其可以用于修饰指针的指向即无类型指针void*,无类型指针那就有意义了,无类型指针不是一定要指向无类型数据,而是可以指向任意类型的数据。

void * 基本操作

大家其实在使用动态内存分配的使用就已经遇到了void *的使用,来我们一起看看如下几个标准函数的原型定义:

上面这些函数都是与内存操作有关的函数,而void* 类型指针使用原则是: 必须要做强制类型转换成为目标类型后才可以使用,如下测试代码:

使用void * 实现无类型数据封装

void既然如此的灵活一定大有用处,如果仅仅只是用来简单地传递参数似乎有点大材小用,我们得把其用到上层的软件设计上来。在一些项目中因为数据类型的不同导致重复编写大量相同代码,为了避免这个问题C++引入了模板这个模块,C语言可以通过void* 类型的指针来完成,按下面我们以一个例子来跟大家介绍一种办法能够减少数据类型变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值