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

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

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

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

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

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

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

#include<stdio.h>int main()
{int nums[] = {1,2,3,4,5};void *ptr1 = nums;//printf("*ptr1 = %d\n",*ptr1);//这样解引用的代码会报错int *ptr2 = nums;printf("*ptr2 = %d\n",*ptr2);//ptr2的类型为(int *),正常运行int *ptr3 = (int*)ptr1;//将ptr1从(void *)强转为(int *)以后,这样就赋予了//void*一个数据类型指针,可以指向内存的值了printf("*ptr3 = %d\n",*ptr3);//等效于printf("*ptr2 = %d\n",*ptr2)printf("ptr1 = %p,ptr2 = %p\n",ptr1,ptr2);//我们发现void *类型和int *类型指向//的内存是一样的,return 0;
}

因此:
**1.void型指针解引用须做类型指定。
2.类型转换的时候须注意类型匹配。
3.另外,如果函数类型可以是任意类型的指针,则需将其参数定义为void *指针
比如memset函数的原型:void *memset(void *s, int ch, size_t n);
**

void*的用法【转】相关推荐

  1. javascript:void(0);用法及常见问题解析

    void 操作符用法格式: javascript:void (expression) 下面的代码创建了一个超级链接,当用户以后不会发生任何事.当用户链接时,void(0) 计算为 0,但 Javasc ...

  2. js中 javascript:void(0) 用法详解

    javascript:void(0)表示不做任何动作.如: 复制代码代码如下: <a href="javascript:void(0);" οnclick="ale ...

  3. javascript:void(0)用法及常见问题解析

    使用过ajax的朋友经常会见到这样的代码:here,这里面的void是一个操作符,该操作符指定要计算一个表达式但是不返回值.javascript:void(0) 在某些情况下会有浏览器不兼容的bug. ...

  4. c 语言void函数用法,c语言void的用法

    许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.下面小编就跟大家介绍下c语言void的用法. c语言void的用法1.void的含义 void的字面意思是 ...

  5. c语言中void函数,c语言中void的用法

    c语言中void的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中void的用法的用法,希望对你们有用. c语言中void的用法的用法如下: void指针是什么? void指针一般被称为通用指针 ...

  6. C/C++——Void的用法

    C/C++--Void的用法 在日常开发中,为了减少代码,通常会使用定义变量来解决重复数据的问题,例如需要打印三次Hello World,最直接的办法是 cout<<"Hello ...

  7. c语言中void的用法

    void void最常见的用法,就是在函数中限定函数的参数和返回值的 void draw(void); 表明函数draw没有参数也没有返回值,void在别的的地方的应用我也没见过: 实际上,如果把vo ...

  8. C语言 --- void的用法解析

    文章目录 一.简介 二.用法 三.总结 一.简介 ​ void 中文翻译为"无类型",有的也叫"空类型".常用在程序中对定义函数的参数类型.返回值.函数中指针类 ...

  9. void *变量用法

    http://blog.csdn.net/u012349696/article/details/51296598 void含义 void的字面意思是"无类型",void *则为&q ...

  10. void类型和void *的用法

    转自:https://blog.csdn.net/wang13342322203/article/details/85338677 C语言中的void和void *总结 1.void的作用 c语言中, ...

最新文章

  1. 神奇的折纸艺术!无限翻转完全停不下来
  2. composer 检查镜像_检查N元树中的镜像
  3. 程序员回家过个年,真心不要容易
  4. 系统集成资质 -复习应考 -做题注意事项
  5. 一个正在被API驱动的互联网时代
  6. 高通9008驱动_安卓手机高通9008模式下如何救砖
  7. 虚拟串口服务器连接485转网口,串口服务器 串口转以太网 RS232转以太网 485转以太网 串口转网口...
  8. 计算机组成原理(4)-中央处理器CPU
  9. java---File类笔记(简单介绍)
  10. 解决oracle分布式锁,2.5.2 分布式锁管理器(DLM)
  11. 解决 win10 商店无法登录, win10 账号问题
  12. imx6ul双网口(LAN8720A)
  13. Unity 3D数学 — 向量运算
  14. 怎样修改计算机用户文件名,win10修改用用户文件夹名字怎么操作_win10更改用户文件夹名称方法...
  15. 8.2计算各商品销售金额
  16. linux软raid阅读笔记,linux_软RAID阅读笔记.pdf
  17. word里双横线怎么打_字体下方的双横线怎么弄 word蓝色双横线
  18. 云炬股市学习笔记20220118
  19. 深度学习-兼顾工作与孩子
  20. h5端登录是什么意思_关于app、小程序和h5之间的区别

热门文章

  1. Windows下 wget 的安装与使用
  2. 中文文本分类 传统机器学习+深度学习
  3. 【尚硅谷_java基础】十五、网络编程
  4. 【电气设计】理论知识学习(持续更新中...)
  5. [emWin]利用内存设备加速GIF图片显示——2021.03
  6. 1644 -- 字符串
  7. 南方科技大学计算机系图灵班,【独家】上了大学就自由了,老师管得少! 这所高校:喔?是吗?...
  8. python爬虫--第一个爬虫程序
  9. ntoskrnl导致的蓝屏死机问题
  10. java类加密_Java中常用加密类型