答案:虚空型。void字面意思是“无类型”,void *是无类型指针,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的功能。作废a;当编译这一行时,将出现一个错误,提示“非法使用类型‘void’”。但是,即使void a编译无误,也没有任何实际意义。void确实适用于:
回答:(2) void *可以赋给任何类型的变量,但需要进行强制转换。它应该有一个很大的范围,所以铸造它,使其范围缩小.1.虚空的作用。在C语言中,void是“不定类型”,所以不能用void来声明变量。例如空隙a=10;如果出现这样的语句,编译器将报告错误:变量或字段“a”声明为void。在C语言中,经常使用void来限制函数的返回类型和函数的参数(1)限制函数的返回类型:当一个函数不需要返回类型时,必须使用void来限制返回类型,这样就限制了函数。
回答:void*类型只有地址信息没有类型信息,所以无法计算偏移量。而且存储的地址只是变量的第一个地址,并不是变量占用的内存的所有地址空间。比如目前大多数C/C编译环境中,整数int数据占用4个字节的空间,那么指针P存储的地址(也就是指向A的地址)就是4个字节空间的第一个地址。例如,当需要读取int数据时,编译器根据指针的类型从指针指向的地址向后寻址。不同类型的指针有不同的寻址范围。例如,double*从指定的地址中查找8字节的存储单元作为变量。在这里,你可能会有一个疑问:既然计算机内部的地址是整数,为什么不直接用整数变量来存储地址,还要发明指针变量呢?从指针实现的角度来看,指针是一个整型变量,它存储的是一个地址值,没有任何附加信息。
回答:void*类型的指针表示对象的地址,但是没有对象的类型信息。这种“无数据类型”的指针主要用于声明函数,使得函数可以使用各种类型的指针参数,或者返回一个“多用途”的指针。例如,标准内存管理功能: