您现在的位置是:亿华云 > IT科技
什么是万能指针?详解C语言万能指针的妙用
亿华云2025-10-03 06:16:01【IT科技】1人已围观
简介简单认识一下void今天跟大家介绍的知识是C语言中的void关键字的用法,void在大部分小伙伴的程序中都只是用于函数无参数传入,或者无类型返回。然而我们平时所定义的变量都会有具体的类型,int,fl
简单认识一下void
今天跟大家介绍的什万知识是C语言中的void关键字的用法,void在大部分小伙伴的针详指针程序中都只是用于函数无参数传入,或者无类型返回。语言用然而我们平时所定义的什万变量都会有具体的类型,int,针详指针float,语言用char等等,什万那是针详指针否有void类型的变量呢?答案是:不行,编译会出错。如下测试代码:

上图很明显编译器不允许定义void类型的语言用变量,变量都是源码库什万需要占用一定内存的,既然void表示无类型,针详指针编译器自然也就不知道该为其分配多大的语言用内存,于是什万造成编译失败。虽然void不能直接修饰变量,针详指针但是语言用其可以用于修饰指针的指向即无类型指针void*,无类型指针那就有意义了,无类型指针不是一定要指向无类型数据,而是可以指向任意类型的数据。
void * 基本操作
大家其实在使用动态内存分配的使用就已经遇到了void *的使用,来我们一起看看如下几个标准函数的高防服务器原型定义:
void* memcpy( void* _Dst, void const* _Src,size_t _Size); int memcmp(void const* _Buf1,void const* _Buf2, size_t _Size); void* memset(void* _Dst,int _Val,size_t _Size ); void* malloc(size_t _Size); void* realloc( void* _Block,size_t _Size ); void* calloc(size_t _Count,size_t _Size); void free( void* _Block );上面这些函数都是与内存操作有关的函数,而void* 类型指针使用原则是: 必须要做强制类型转换成为目标类型后才可以使用,如下测试代码:
#include <stdio.h> #include <string.h> #include <malloc.h> int main() { int num = 0; void* pVoid = # printf("%d", *(int*)pVoid); //解引用前 必须强制类型转换 int* p = (int*)malloc(4); //赋值给目标指针 做类型转换 return 0; }使用void * 实现无类型数据封装
void既然如此的灵活一定大有用处,如果仅仅只是用来简单地传递参数似乎有点大材小用,我们得把其用到上层的软件设计上来。在一些项目中因为数据类型的不同导致重复编写大量相同代码,为了避免这个问题C++引入了模板这个模块,C语言可以通过void* 类型的指针来完成,按下面我们以一个例子来跟大家介绍一种办法能够减少数据类型变化所带来的程序重复代码的增加。
#include <stdio.h> #include <stdlib.h> /很赞哦!(8787)
上一篇: 利用闪存使数据中心走向绿色低碳