但这并不意味着,void *
“
也可以无需强制类型转换地赋给其它类型的指针。因为 无类
”
“
”
“
”
“
”
“
型 可以包容 有类型 ,而 有类型 则不能包容 无类型 。道理很简单,我们可以说 男人
”
“
”
“
”
和女人都是人 ,但不能说 人是男人 或者 人是女人 。下面的语句编译出错:
void *p1;
int *p2;
p2 = p1;
“‘
提示 =‘ : cannot convert from ‘void *‘ to ‘int *‘”。
3.void 的使用
下面给出 void 关键字的使用规则:
规则一 如果函数没有返回值,那么应声明为 void 类型
在 C 语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但
是许多程序员却误以为其为 void 类型。例如:
add ( int a, int b )
{
return a + b;
}
int main(int argc, char* argv[])
{
printf ( "2 + 3 = %d", add ( 2, 3) );
}
程序运行的结果为输出:
2 + 3 = 5
这说明不加返回值说明的函数的确为 int 函数。
林锐博士《高质量 C/C++
“
编程》中提到: C++语言有很严格的类型安全检查,不允许
”
上述情况(指函数不加类型声明)发生 。可是编译器并不一定这么认定,譬如在 Visual
C++6.0 中上述 add 函数的编译无错也无警告且运行正确,所以不能寄希望于编译器会做
严格的类型检查。
因此,为了避免混乱,我们在编写 C/C++程序时,对于任何函数都必须一个不漏地
指定其类型。如果函数没有返回值,一定要声明为 void 类型。这既是程序良好可读性的需
要,也是编程规范性的要求。另外,加上 void
“
”
类型声明后,也可以发挥代码的 自注释
“
”
作用。代码的 自注释 即代码能自己注释自己。
规则二 如果函数无参数,那么应声明其参数为 void
在 C++语言中声明一个这样的函数:
int function(void)
{