c语言重载(overriding in C)或函数不定参数个数

网友投稿 880 2022-10-18

c语言重载(overriding in C)或函数不定参数个数

c语言重载(overriding in C)或函数不定参数个数

google一下 c overiding发现有这样一段英文解释:

Because C doesn't require that you pass all parameters to the function if you leave the parameter list blank in the prototype. The compiler should only throw up warnings if the prototype has a non-empty parameter list and you don't pass enough enough arguments to the function.在c语言里面如果函数原型参数列表为空,编译器不会要求你把所有参数传递给函数。如果编译器发现函数原型参数列表非空,并且没有传递足够的参数给函数,他应该仅仅只抛出一个警告。

itsme@dreams:~/C$ cat param.c#include void func();int main(void){ func(1); func(17, 5); return 0;}void func(int a, int b){ if(a == 1) puts("Only going to use first argument."); else printf("Using both arguments: a = %d, b = %d\n", a, b);}itsme@dreams:~/C$ gcc -Wall -ansi -pedantic param.c -o paramitsme@dreams:~/C$ ./paramOnly going to use first argument.Using both arguments: a = 17, b =5

actually fcnt is defined in the header file using int fcntl (int fd, int cmd, ...);This means it can take variable number of arguments. now it looks at the command and then decides if anything follows as the third parameter or not.see man va_arg etc for more details.

通常函数fcnt在头文体以int fcntl (int fd, int cmd, ...)方式定义,意味着他可以接受不定个数的参数,

你可以在linux下通过man va_arg等等查看详情。

#include #include void printargs(int args1,...)//输出所有的int类型的参数,直到-1结束{ va_list ap; int i; va_start(ap,args1); for (i = args1; i != -1; i =va_arg(ap,int)) printf("%d ",i); va_end(ap); putchar('\n');}int main(void){ printargs(5,2,14,84,97,15,24,48,-1); printargs(84,51,-1); printargs(-1); printargs(1,-1); return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JFinalTest- JFinal​ Controller 测试框架
下一篇:PHP 简单的MVC框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~