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 <stdio.h> void func(); int main(void)
{
func();
func(, ); return ;
} void func(int a, int b)
{
if(a == )
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 param
itsme@dreams:~/C$ ./param
Only going to use first argument.
Using both arguments: a = , b =
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 <stdio.h>
#include <stdarg.h> void printargs(int args1,...)//输出所有的int类型的参数,直到-1结束
{
va_list ap;
int i; va_start(ap,args1);
for (i = args1; i != -; i =va_arg(ap,int))
printf("%d ",i);
va_end(ap);
putchar('\n');
} int main(void)
{
printargs(,,,,,,,,-);
printargs(,,-);
printargs(-);
printargs(,-);
return ;
}
c语言重载(overriding in C)或函数不定参数个数的更多相关文章
- C语言函数不定参数实现方式
函数如何实现不定参数: 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦,即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,提出了指针参数来解决问题. (1)va_ ...
- js函数定义参数个数和实际传入参数的对比
因为js是一种弱类型的编程语言,对数据类型的要求没有其他编程语言的要求严格,所以在定义函数的时候不需要像java和C#一样对其传入参数的类型进行定义.那么传入参数的个数有没有影响呢?今天小猪就做了个实 ...
- 关于C函数的参数个数的问题
本文引自:http://c.biancheng.net/cpp/html/1592.html 一个函数的参数的数目没有明确的限制,但是参数过多(例如超过8个)显然是一种不可取的编程风格.参数的数目直接 ...
- c++11之获取模板函数的参数个数和函数返回值类型
本文演示c++需要支持c++11及以上标准 获取参数个数 1.模板函数声明 template <class R, class... Args> R getRetValue(R(*)(Arg ...
- C语言的本质(18)——函数的可变参数
一般而言,在设计函数时会遇到许多数学和逻辑操作,是需要一些可变功能.例如,计算数字串的总和.字符串的联接或其它操作过程. 实现一个函数,要求在函数中计算传入的所有参数之和,并输出到屏幕上.这个函数实现 ...
- C语言中函数可变参数解析
大多数时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数.但在某些情况下希望函数的参数个数可以根据需要确定.典型的例子有 大家熟悉的函数printf().scanf ...
- (转)C++ main函数中参数argc和argv含义及用法
原博地址:https://blog.csdn.net/dcrmg/article/details/51987413 argc 是 argument count的缩写,表示传入main函数的参数个数: ...
- C++ main函数中参数argc和argv含义及用法
argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...
- Golang函数-不定参函数
Golang函数-不定参函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
随机推荐
- C# AtomicLong
using System; using System.Threading; /// <summary> /// Provides lock-free atomic read/write u ...
- 搭建MySQL高可用负载均衡集群(收藏)
https://www.cnblogs.com/phpstudy2015-6/p/6706465.html
- uva-10152-乌龟排序
求从待排序的到期望的顺序的最小操作顺序,只能进行一个操作,将当前的乌龟拿出来,上面的下移,拿出来的放到最上面 发现voj没有PE, 解题方法,把俩个串反过来使用,从期望的顺序到待排序的顺序. AC:1 ...
- jar包双击执行引用外部包问题
大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口. 具体的方法是修改jar包内目录META-INF下的MANIF ...
- 温故而知新复习下PHP面向对象
面向对象在PHP中是以类的形势展示的 PHP中的类是单继承的,用关键字extends来实现继承父类, 关键字public protected private 第一个是公开的 谁都可以访问,第二个只能本 ...
- 2.Triangle (三角形)
1.等腰直角三角形: https://www.cnblogs.com/FlyingLiao/p/9869040.html 2.1任意三角形: <!DOCTYPE html> <htm ...
- OpenACC 书上的范例代码(Jacobi 迭代),part 1
▶ 使用Jacobi 迭代求泊松方程的数值解 ● 原始串行版本,运行时间 2272 ms #include <stdio.h> #include <stdlib.h> #inc ...
- 用strings命令查看kafka-log内容 过滤二进制编码
kafka的log内容格式还不没怎么了解,想快速浏览消息内容的话,除了使用它自带的kafka-console-consumer.sh脚本,还可以直接去看log文件本身,不过内容里有部分二进制字符,通过 ...
- HTML5 Canvas ( 线段端点的样式 ) lineCap
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 获取ASPxGridView 中的数据(仅仅是获取;注意模板是如何获取的)
1.取得控件值 using System.Collections.Generic; //取得当前控件值的集合 直接寻找控件的ID List<object> keyValues = this ...