0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是C语言(void*)类型

汽车电子技术 来源:微亮笔记 作者:PASSION 2023-02-24 14:31 3755次阅读

大家在C语言的学习过程中肯定见过各种指针符号,如 int*, char* 等等等等。顾名思义,int就是一个指向整形的指针,而char则是一个指向字符的指针,而 “ void* ”是什么呢?本期就为大家介绍 空指针

void指针一般被称为通用指针或叫泛指针。它是C语言关于纯粹地址的一种约定。当某个指针是void型指针时,所指向的对象不属于任何类型。

1、void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据。和用int表示指针异曲同工,只是更明确是“指针”。

因此void*只能表示一个地址,不能用来&取值,也不能移动指针,因为不知道多少字节是一个数据单位。

2、void *就是一个不能动的“地址”,在进行&、移动指针之前必须转型为类型指针。

3、指针在只知道内存,但是不知道是什么类型的时候。

4、在C/C++中,在任意时刻都可以使用其它类型指针来代替void指针,或者用void指针来代替其他类型指针。

5、对指针变量的解引用,使用间接运算符*达到目的。但是在使用空指针的情况下,需要转换指针变量解引用。这是因为空指针没有与之关联的数据类型。编译器无法知道void指针指向的数据类型。因此,要获取由void指针指向的数据,需要使用在void指针位置内保存的正确类型的数据进行类型转换。

也就是说,void*类型的指针可以接受任意类型的指针

但是不能够进行解引用操作,也不能进行加减运算

需要注意的是,void* 即使在接收某一具体类型的指针后,它的类型依然是void*,我们仍然无法对其进行解引用操作,需要进行强制类型转换才可以。

由于空指针的特殊性,我们一般将其运用在函数参数里,用以接收各种类型的参数。

例:

void* e1;
*(int*)e1;

下面附带一个有空指针参与的qsort(快速排序)函数

注1:由于qsort是库函数,因此我在编写时将函数名改为了 ‘my_qsort’

注2:此函数只是向大家展示空指针的应用,其中仍有指针方面的知识,我们会在后续章节具体介绍

qsort 函数
void swap(char*buf1,char*buf2,int width)
//交换函数
{
  for (int i = 0;i < width;i++)
  {
char tmp = *buf1;
*buf1 = *buf2;
*buf2 = tmp;    
buf1++;    
buf2++;
  }
 }
void my_qsort(void* base,int sz,int width, int (*cmp)(void* e1,void* e2))
{
  for (int i = 0;i < sz;i++)
  {    for (int j = 0;j < sz - 1 - i;j++)
{      //两个元素的比较
      if (cmp((char*)base + j * width, (char*)base + (j + 1) * width)>0) 
     {        //交换
        swap((char*)base + j * width, (char*)base + (j + 1) * width,width);
      }
    }
  }
}int cmp_int(const void* e1, const void* e2)
{
  return *(int*)e1 - *(int*)e2;
}
int main()
{
  int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  my_qsort(arr, sz, sizeof(arr[0]), cmp_int);}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7628

    浏览量

    140006
  • Int
    Int
    +关注

    关注

    0

    文章

    24

    浏览量

    16184
  • 符号
    +关注

    关注

    0

    文章

    55

    浏览量

    4521
收藏 人收藏
    相关推荐
    热点推荐

    C语言void指针的基本认识及典型应用

    C语言中,*类型就是指针类型,比如 int *p,double *q,虽然是不一样的指针,但是大小却一样sizeof(p) == sizeof(q),因为它们都是同一种
    发表于 02-01 09:26 1294次阅读

    C语言中的基本数据类型

    C语言是非常重要的一门程序设计语言,学好C语言再去学习其他编程语言将变得很轻松,因为大部分
    发表于 04-26 17:33 2267次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>中的基本数据<b class='flag-5'>类型</b>

    C预处理与C语言基本数据类型

    指令表:注意:宏名的书写由标识符与两边各两条下划线构成。C语言基本数据类型不同操作系统中数据类型所占字节数图解数据类型的其他分类:变量常量(
    发表于 12-21 08:29

    C程序的运行环境和C语言的数据类型

    ⒈ 实验目的⑴ 了解在具体的语言环境下如何编辑、编译、连接和运行一个C程序。⑵ 通过运行简单的C程序,初步了解C源程序的特点。⑶ 掌握C
    发表于 06-21 09:36 55次下载

    C语言voidvoid指针深层探索

    1.概述 本文将对void关键字的深刻含义进行解说,并详述voidvoid指针类型的使用方法与技巧。 2.void的含义
    发表于 09-21 11:36 166次下载

    C语言教程之检查字符类型

    C语言教程之检查字符类型,很好的C语言资料,快来学习吧。
    发表于 04-25 09:38 0次下载

    C语言教程之显卡类型测试

    C语言教程之显卡类型测试,很好的C语言资料,快来学习吧。
    发表于 04-25 17:07 0次下载

    浅谈void 型指针的高阶用法

    通用指针或叫泛指针。它是C语言关于纯粹地址的一种约定。当某个指针是void型指针时,所指向的对象不属于任何类型。 因为void指针不属于任何
    的头像 发表于 08-09 15:54 1819次阅读
    浅谈<b class='flag-5'>void</b> 型指针的高阶用法

    STM32编程:void指针高阶用法举例,设计一个通用掉电存储子系统

    一般被称为通用指针或叫泛指针。它是C语言关于纯粹地址的一种约定。当某个指针是void型指针时,所指向的对象不属于任何类型。 因为void指针
    发表于 12-27 18:47 10次下载
    STM32编程:<b class='flag-5'>void</b>指针高阶用法举例,设计一个通用掉电存储子系统

    C语言-void类型作为万能指针类型

    void类型在基本数据类型里是`空类型`,`无类型`; void
    的头像 发表于 08-14 10:04 2082次阅读

    一文揭秘C语言void指针

    void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据。和用int表示指针异曲同工,只是更明确是“指针”。
    的头像 发表于 02-02 17:18 1873次阅读

    什么是void指针

    C语言中,*类型就是指针类型,比如 int *p,double *q,虽然是不一样的指针,但是大小却一样sizeof(p) == sizeof(q),因为它们都是同一种
    的头像 发表于 02-13 15:02 1593次阅读

    C语言的数据类型-2

    对于一个计算机程序,它所做的所有运算的本质都是数据的处理。但是数据的样式并不单一,因此就有了各种各样的数据类型。在C语言中,为了处理这些复杂的数据,C
    的头像 发表于 02-21 14:44 953次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>的数据<b class='flag-5'>类型</b>-2

    如何理解C++中的void

    首先void*中的void代表一个任意的数据类型,"星号"代表一个指针,所以其就是一个任意数据类型的指针。
    的头像 发表于 03-30 15:01 4653次阅读
    如何理解<b class='flag-5'>C</b>++中的<b class='flag-5'>void</b>?

    C语言数据类型有哪些

    C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
    发表于 03-20 10:56 636次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>数据<b class='flag-5'>类型</b>有哪些

    搭建树莓派网络监控系统:顶级工具与技术终极指南!

    树莓派网络监控系统是一种经济高效且功能多样的解决方案,可用于监控网络性能、流量及整体运行状况。借助树莓派,我们可以搭建一个网络监控系统,实时洞察网络活动,从而帮助识别问题、优化性能并确保网络安全。安装树莓派网络监控系统有诸多益处。树莓派具备以太网接口,还内置了Wi-Fi功能,拥有足够的计算能力和内存,能够在Linux或Windows系统上运行。因此,那些为L

    上海晶珩电子科技有限公司
    4小时前
    188

    STM32驱动SD NAND(贴片式SD卡)全测试:GSR手环生物数据存储的擦写寿命与速度实测

    在智能皮电手环及数据存储技术不断迭代的当下,主控 MCU STM32H750 与存储 SD NAND MKDV4GIL-AST 的强强联合,正引领行业进入全新发展阶段。二者凭借低功耗、高速读写与卓越稳定性的深度融合,以及高容量低成本的突出优势,成为大规模生产场景下极具竞争力的数据存储解决方案。

    MK米客方德
    6小时前
    219

    芯对话 | CBM16AD125Q这款ADC如何让我的性能翻倍?

    综述在当今数字化时代,模数转换器(ADC)作为连接模拟世界与数字系统的关键桥梁,其技术发展对众多行业有着深远影响。从通信领域追求更高的数据传输速率与质量,到医疗影像领域渴望更精准的疾病诊断,再到工业控制领域需要适应复杂恶劣环境的稳定信号处理,ADC的性能提升成为推动这些行业进步的重要因素。行业现状分析在通信行业,5G乃至未来6G的发展,对基站信号处理提出了极

    芯佰微电子
    8小时前
    163

    史上最全面解析:开关电源各功能电路

    01开关电源的电路组成开关电源的主要电路是由输入电磁干扰滤波器(EMI)、整流滤波电路、功率变换电路、PWM控制器电路、输出整流滤波电路组成。辅助电路有输入过欠压保护电路、输出过欠压保护电路、输出过流保护电路、输出短路保护电路等。开关电源的电路组成方框图如下:02输入电路的原理及常见电路1AC输入整流滤波电路原理①防雷电路:当有雷击,产生高压经电网导入电源时

    张飞实战电子官方
    1天前
    275

    有几种电平转换电路,适用于不同的场景

    一.起因一般在消费电路的元器件之间,不同的器件IO的电压是不同的,常规的有5V,3.3V,1.8V等。当器件的IO电压一样的时候,比如都是5V,都是3.3V,那么其之间可以直接通讯,比如拉中断,I2Cdata/clk脚双方直接通讯等。当器件的IO电压不一样的时候,就需要进行电平转换,不然无法实现高低电平的变化。二.电平转换电路常见的有几种电平转换电路,适用于

    张飞实战电子官方
    2天前
    310

    瑞萨RA8系列教程 | 基于 RASC 生成 Keil 工程

    对于不习惯用 e2 studio 进行开发的同学,可以借助 RASC 生成 Keil 工程,然后在 Keil 环境下愉快的完成开发任务。

    RA生态工作室
    05-01 10:00
    575

    共赴之约 | 第二十七届中国北京国际科技产业博览会圆满落幕

    作为第二十七届北京科博会的参展方,芯佰微有幸与800余家全球科技同仁共赴「科技引领创享未来」之约!文章来源:北京贸促5月11日下午,第二十七届中国北京国际科技产业博览会圆满落幕。本届北京科博会主题为“科技引领创享未来”,由北京市人民政府主办,北京市贸促会,北京市科委、中关村管委会,北京市经济和信息化局,北京市知识产权局和北辰集团共同承办。5万平方米的展览云集

    芯佰微电子
    2天前
    763

    道生物联与巍泰技术联合发布 RTK 无线定位系统:TurMass™ 技术与厘米级高精度定位的深度融合

    道生物联与巍泰技术联合推出全新一代 RTK 无线定位系统——WTS-100(V3.0 RTK)。该系统以巍泰技术自主研发的 RTK(实时动态载波相位差分)高精度定位技术为核心,深度融合道生物联国产新兴窄带高并发 TurMass™ 无线通信技术,为室外大规模定位场景提供厘米级高精度、广覆盖、高并发、低功耗、低成本的一站式解决方案,助力行业智能化升级。

    道生物联
    2天前
    604

    智能家居中的清凉“智”选,310V无刷吊扇驱动方案--其利天下

    炎炎夏日,如何营造出清凉、舒适且节能的室内环境成为了大众关注的焦点。吊扇作为一种经典的家用电器,以其大风量、长寿命、低能耗等优势,依然是众多家庭的首选。而随着智能控制技术与无刷电机技术的不断进步,吊扇正朝着智能化、高效化、低噪化的方向发展。那么接下来小编将结合目前市面上的指标,详细为大家讲解其利天下有限公司推出的无刷吊扇驱动方案。▲其利天下无刷吊扇驱动方案一

    其利天下技术
    05-10 16:29
    1.5k

    电源入口处防反接电路-汽车电子硬件电路设计

    一、为什么要设计防反接电路电源入口处接线及线束制作一般人为操作,有正极和负极接反的可能性,可能会损坏电源和负载电路;汽车电子产品电性能测试标准ISO16750-2的4.7节包含了电压极性反接测试,汽车电子产品须通过该项测试。二、防反接电路设计1.基础版:二极管串联二极管是最简单的防反接电路,因为电源有电源路径(即正极)和返回路径(即负极,GND),那么用二极

    张飞实战电子官方
    05-09 19:34
    996

    半导体芯片需要做哪些测试

    首先我们需要了解芯片制造环节做⼀款芯片最基本的环节是设计->流片->封装->测试,芯片成本构成⼀般为人力成本20%,流片40%,封装35%,测试5%(对于先进工艺,流片成本可能超过60%)。测试其实是芯片各个环节中最“便宜”的一步,在这个每家公司都喊着“CostDown”的激烈市场中,人力成本逐年攀升,晶圆厂和封装厂都在乙方市场中“叱咤风云”,唯独只有测试显

    汉通达
    05-09 10:02
    936

    解决方案 | 芯佰微赋能示波器:高速ADC、USB控制器和RS232芯片——高性能示波器的秘密武器!

    示波器解决方案总述:示波器是电子技术领域中不可或缺的精密测量仪器,通过直观的波形显示,将电信号随时间的变化转化为可视化图形,使复杂的电子现象变得清晰易懂。无论是在科研探索、工业检测还是通信领域,示波器都发挥着不可替代的作用,帮助工程师和技术人员深入剖析电信号的细节,精准定位问题所在,为创新与发展提供坚实的技术支撑。一、技术瓶颈亟待突破性能指标受限:受模拟前端

    芯佰微电子
    05-09 10:36
    1.6k

    硬件设计基础----运算放大器

    1什么是运算放大器运算放大器(运放)用于调节和放大模拟信号,运放是一个内含多级放大电路的集成器件,如图所示:左图为同相位,Vn端接地或稳定的电平,Vp端电平上升,则输出端Vo电平上升,Vp端电平下降,则输出端Vo电平下降;右图为反相位,Vp端接地或稳定的电平,Vn端电平上升,则输出端Vo电平下降,Vn端电平下降,则输出端Vo电平上升2运算放大器的性质理想运算

    张飞实战电子官方
    05-08 19:34
    648

    ElfBoard技术贴|如何调整eMMC存储分区

    ELF 2开发板基于瑞芯微RK3588高性能处理器设计,拥有四核ARM Cortex-A76与四核ARM Cortex-A55的CPU架构,主频高达2.4GHz,内置6TOPS算力的NPU,这一设计让它能够轻松驾驭多种深度学习框架,高效处理各类复杂的AI任务。

    ElfBoard
    05-08 15:01
    1.2k

    米尔基于MYD-YG2LX系统启动时间优化应用笔记

    1.概述MYD-YG2LX采用瑞萨RZ/G2L作为核心处理器,该处理器搭载双核Cortex-A55@1.2GHz+Cortex-M33@200MHz处理器,其内部集成高性能3D加速引擎Mail-G31GPU(500MHz)和视频处理单元(支持H.264硬件编解码),16位的DDR4-1600/DDR3L-1333内存控制器、千兆以太网控制器、USB、CAN、

    米尔电子
    05-08 08:07
    420