会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 什么是万能指针?详解C语言万能指针的妙用!

什么是万能指针?详解C语言万能指针的妙用

时间:2025-11-04 21:10:16 来源:益强数据堂 作者:域名 阅读:659次

简单认识一下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>   /

(责任编辑:系统运维)

推荐内容
  • 解决U盘写保护问题的有效方法(终结U盘写保护困扰,实现格式化的妙招)
  • 架构师到底该不该写代码
  • C#中十个你真的应该学习并投入使用的功能
  • 九个用于移动APP开发的顶级JavaScript框架
  • 小白也能轻松学会电脑装机(详解电脑装机教程,让你快速掌握装机技巧)
  • 深入了解JavaScript中的for循环