「void」((void*)0)的含意和void的一些关键点

  • 内容
  • 相关

((void*)0)的含意和void的一些关键点
void(0);
一、在c語言中,0是一个独特的值,它能够表达:整形标值0,空字符,逻辑性假(false)。表达的物品多了,有时不太好分辨。特别是在是空字符和大数字0中间。
以便确立的强调,0是空字符的含意,用采用了: ((void *) 0) 这一关系式。表达把0强制转换为空字符,无论之前意味着的哪些含意。
在c的规范头文件中,就这样界定NULL的:
#defineNULL((void*)0)
有关void在表针的运用:
void表达“无种类”,void*表达无种类表针。在界定表针的那时候,务必申明表针的种类,由于种类决策了表针挪动的字节数。
练习题:
doubled=3.14;
double*dptr=&d;
int*iptr=dptr;//不正确,double和int占有不一样的字节数,编译出错。
doubled=3.14;
double*dptr=&d;
void*vptr=dptr//恰当,无种类表针能够接纳一切种类的表针。
二、那麼这类“无种类的表针”能开展赋值实际操作吗?能够,可是要留意:
下面做法大全是恰当的:
#include<stdio.h>
intmain(intargc,char*argv[])
{
doubled=3.14;
double*dptr=&d;
void*vptr=dptr;
printf("vptr'svalue%f.
",*((double*)vptr));
inti=10;
vptr=&i;
printf("vptr'svalue%d.
",*((int*)vptr));
return0;
}
*((double*)vptr)的含意是:把vptr强制转换为double种类表针,再用*号赋值。
由于:*为单目运算符,优先由右至左,因此除掉表层括弧都是能够的。*((double*)vptr)等额的 *(double*)vptr
三、不可以把“无种类表针”赋给“有种类表针”,例如:能够说,“男人和女人全是人”,但不可以说,“人是男性”或是“人是女性”。看练习题:
void*vptr;
double*dptr
dptr=vptr//不正确,不可以把无标记表针赋给有标记表针 

本文标签:

版权声明:若无特殊注明,本文皆为《Black Leaguer》原创,转载请保留文章出处。『鹦鹉搜索』

百度收录:百度已收录『查看详情』

本文链接:「void」((void*)0)的含意和void的一些关键点 - https://www.15qq.cn/spe_seo/1092.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

未显示?请点击刷新

允许邮件通知