关键词不能为空

当前您在: 主页 > 英语 >

void详解

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-03 12:42
tags:

-

2021年3月3日发(作者:brm)


void



void


指 针含义的深刻解析



void


的含义




void


即“无类型”,


void *


则为“无类型指针”,可


以指向任何数据类型。




void


指针使用规范






v oid


指针可以指向任意类型的数据,亦即可用任意


数据类型的 指针对


void


指针赋值。例如:




int *pint;



void *pvoid;



pvoid = pint;



/*


不过不能


pint = pvoid; */




如果要将

pvoid


赋给其他类型指针,则需要强制类型


转换如:< /p>


pint = (int *)pvoid;






②在


ANSI C


标准中,不允许对< /p>


void


指针进行算术运


算如

< p>
pvoid++



pvoid+=1


等,而在


GNU


中则允许,因


为在缺省情况下,


GNU


认为


voi d *



char *


一样。


sizeof( *pvoid )== sizeof( char ).





void


的作用





①对函数返回的限定。





②对函数参数的限定。





当函数不需要返回值时,必须 使用


void


限定。例如:



void func(int, int);




当函数不允许接受参数时,必须使用


void


限定。例如:



int func(void)







由于


void


指针可以指向任意类型的数据,亦即可用任


意数据类型 的指针对


void


指针赋值,因此还可以用

void


指针来作为函数形参,这样函数就可以接受任意数据类型

< br>的指针作为参数。例如:




void * memcpy( void *dest, const void *src,


size_t len );



void * memset( void * buffer


, int c, size_t


num );



--------------------------- ------------------------------


--------- ------------



1.

许多初学者对


C/


C++


语言中的


void



void

< br>指针类


型不甚理解,因此在使用上出现了一些错误。本文将对

void


关键字的深刻含义进行解说,并详述


void



void



针类 型的使用方法与技巧。







的含义





void


的字面意思是“无类型”,


void



*


则为“无类


型指针”,


void



*


可以指向任何类型的数据。

< p>
void


几乎


只有“注释”和限制程序的作用,因 为从来没有人会定义


一个


void


变量 ,让我们试着来定义:




void



a;




这行语句编译时会出错,提示



illegal



use



of



type




void


’”。不过,即使


void



a


的编译不会出错,它也没有任何实际意义。

< br>




void


真正发挥的作用在于:






1




对函数返回的限定;






2




对函数参数的限定。






众所周知,如果指针


p1



p2


的类型相同,那 么我


们可以直接在


p1



p2


间互相赋值;如果


p1



p2


指向


不同的数据类型,则必须使 用强制类型转换运算符把赋值


运算符右边的指针类型转换为左边指针的类型。

< p>





例如:



float



*p1;


int



*p2;


p1



=



p2;




其中


p1



=



p2


语句 会编译出错,提示


“’


=


< p>


:



cannot



convert



from




int



*




to




float



*


’”,必须改为:



p1



=



(float



*)p2;




void



*


则不同,任何类型的指针都可以直接赋值给


它,无需进行强制 类型转换:



void



*p1;


int



*p2;


p1



=



p2;




但这并不意味着,


void



*


也可以无需强制类型转换地


赋给其它类型的指 针。因为“无类型”可以包容“有类


型”,而“有类型”则不能包容“无类型”。道理很 简单,


我们可以说“男人和女人都是人”,但不能说“人是男人”


或者“人是女人”。下面的语句编译出错:



void



*p1;


int



*p2;


p2



=



p1;




提示


“’


=




:



cannot



convert



from




void



*




to




int



*


’”。





的使用





下面给出


void

< br>关键字的使用规则:





规则一



如果函数没有返回值,那么应 声明为


void



< br>




C


语言中,凡不加返回值类型限定的函数,就会被


编译器作 为返回整型值处理。但是许多程序员却误以为其



void


类型。例如:



add



(



int



a,



int



b



)


{


return



a



+



b;


}


int



main(int



argc,



char*



argv[])


{


printf



(





+



3



=



%d



add



(



2,



3)



);


}




程序运行的结果为输出:





2



+



3



=



5




这说明不加返回值说明的函数的确为


int


函数。





林锐博士《高质量


C/


C++


编程》中提到:“


C++


言有很严格的类型


安全


检查,不 允许上述情况(指函数不


加类型声明)发生”。可是编译器并不一定这么认定,譬


如在


Visual



C++6.0


中上述


add


函数的编译 无错也无警


告且运行正确,所以不能寄希望于编译器会做严格的类型

检查。




< br>因此,为了避免混乱,我们在编写


C/C++


程序时,对


于任何函数都必须一个不漏地指定其类型。如果函数没有

-


-


-


-


-


-


-


-



本文更新与2021-03-03 12:42,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/699995.html

void详解的相关文章