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); return 0; }

编译上面的程序会发现,编译器报错,无法正常编译。

void指针简述-void型指针赋值

这说明编译器确实是在解引时无法确定复制*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); return 0; } void指针简述-void型指针赋值

void指针没有指定类型的指针即指针只有地址数据属性,不具备解引时的空间 大小属性。

审核编辑:汤梓红

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:void指针简述-void型指针赋值 https://www.yhzz.com.cn/a/7804.html

上一篇 2023-04-18
下一篇 2023-04-18

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。