void型指针(void指针简述)
为什么这里单独提到空指针类型?主要是因为指针类型比较特殊。Void类型很容易被认为是空的,但是对于指针来说,它并不意味着空,而是不确定
为什么这里单独提到空指针类型?主要是因为指针类型比较特殊。Void类型很容易被认为是空的,但是对于指针来说,它并不意味着空,而是不确定性。很多情况下,在声明一个指针的时候,可能不知道它是什么类型,或者指针指向的数据类型有很多种,或者程序员只是想用一个指针操作一个内存空间。此时指针可以声明为void类型。但问题是,由于void类型,当某个数据类型被解引用时,编译器会根据该类型占用的空间对相应的数据进行解引用,例如int p,那么p就会被编译器解引用为p指针地址的4字节的空间大小。但是对于空指针类型,编译器如何知道要解引用的内存大小呢?先看一段代码:
#include int main(int argc,char * * argv){ int a=10;void * p;p=a;printf(p=% d \ n ,* p);返回0;}编译上述程序时,会发现编译器报错,无法正常编译。
这说明编译器真的可以反引用时不能确定*p的大小,所以这里需要告诉编译器p的类型或者*p的大小。怎么会?它这很简单。您可以使用转换类型,如下所示:
*(int*)p以便上面的程序可以写成如下形式:
#include int main(int argc,char * * argv){ int a=10;void * p;p=a;printf(p=% d \ n ,*(int *)p);返回0;}void指针没有指定类型的指针,即指针只有地址数据属性,解引用时没有空间大小属性。
审计唐子红
推荐阅读
- 流量计工作原理图(总结10大常见流量计工作原理及特点)
- 苹果8plus二手价格? 苹果iphone8plus价格
- 小牛vs凯尔特人录像,凯尔特人VS篮网录像
- 2022年汉兰达换代,2020汉兰达换代
- 请问诺基亚E66是不是3G手机? 诺基亚e66当年卖多少钱
- cba总决赛一共打几场,Cba总决赛打几场
- ebuy手机版软件介绍(ebuy手机版)
- 赛欧车油耗怎么样,赛欧怎么样内饰油耗最新价格
- 用于沿车内通信网络高效传输传感器数据的SENT协议
- 莫斯科中央陆军队,莫斯科中央陆军是哪个国家
- NOKIA6303C怎么使用安卓系统软件? 诺基亚6303c
- 江西赛骏动力科技有限公司,赛骏怎么样内饰油耗最新价格
- 澳大利亚NBA篮球国家队,澳大利亚 篮球队
- 电子线束是什么(电子线束的重要性)
- 法语助手在线词典软件介绍(法语助手在线词典)
- 风度车质量怎么样,风度怎么样
- 天生是优我 魏冰雪,天生是优我魏冰雪个人资料家庭背景
- 荣耀路由2怎么样(荣耀路由2到底好不好用)
- DoubleKiller汉化版软件介绍(DoubleKiller汉化版)