void函数调用时显示不允许使用不完整的_C语言定义无参数的函数时,f()和f(void)有什么区别?...

相信C语言初学者常会在前辈留下的项目,或者一些开源项目中看到以 void 作为参数的函数,例如 void fun(void),虽然我们都明白在C语言中,“void”表示空,但是按理说,如果函数不需要参数,直接空着就行:void fun(),为什么还要多此一举的写上 void 呢?

void函数调用时显示不允许使用不完整的_C语言定义无参数的函数时,f()和f(void)有什么区别?..._第1张图片

void fun(void),为什么还要多此一举的写上 void 呢?

C语言函数参数的定义方式

大多数C语言教程在谈到自定义函数时,一般都将函数的“参数类型列表”放在“()”中,例如:

void f(int a, float b){ ...}

C语言没有理由将“无参数函数”作为特例处理,因此从“通用性”来看,定义C语言函数时,“()”内应该始终有“参数类型列表”,如果函数不需要使用参数,应该指定为 void,而不是空着。

但是在C语言程序开发中,void fun(); 这种定义函数的方式又的确是可行的,难道C语言真的将“无参数函数”作为特例处理了吗?

void函数调用时显示不允许使用不完整的_C语言定义无参数的函数时,f()和f(void)有什么区别?..._第2张图片

难道C语言真的将“无参数函数”作为特例处理了吗?

其实不是的,在C语言中,定义函数时,指定参数还有另外一种方式(标识符列表方式):

void f(a, b) int a; float b;{ ...}

以标识符列表方式定义函数不常见,但的确是可用的,下面是一段完整的测试C语言代码,请看:

#include void f(a, b) int a; float b;{ printf("%d, %f

你可能感兴趣的:(void函数调用时显示不允许使用不完整的_C语言定义无参数的函数时,f()和f(void)有什么区别?...)