Void 参数

在C程序中若是在声明函数的时候若是没有任何参数那么须要将参数定义为void以此来限定此函数不可传递任何参数,若是不进行限定让参数表默认为空其意义是能够传递任何参数,这个问题的由来其实是因为要兼容早期的K&C标准形成的。K&C 在声明函数时参数表为空,也就是说函数声明时的函数原型签名信息不包含参数信息,若是要有明确的定义空参数的行为那么就要本身去处理它。

//空参数表表明能够传递任意的参数,
void fun();
fun(1);//正常编译
fun(1,2,3);//正常编译markdown

//参数表定义为void才是表示不能传递任何参数
void noargfun(void);
noargfun(1);//编译错误,有的编译器仅仅是警告函数

在C++中定义函数时是否有必要对无参数的函数列表定义void参数呢?答案是No。C++标准规定若是没有对参数列表进行定义那么就表示函数不能传递任何参数,这从语义上来说更符合人的思惟方式。如下是C++代码

//空参数表的意义是不能够传递任何参数
void fun();//void fun(void)含义相同
fun(1);//编译错误
fun(1,2,3);//编译错误code

固然若是指定义void那么无论在C仍是C++都表示不能够传递任何参数。
相关文章
相关标签/搜索