zoukankan      html  css  js  c++  java
  • 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(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
    ", 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 = 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 <stdio.h>
    #include <stdarg.h>
    
    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('
    ');
    }
    
    
    int main(void)
    {
        printargs(5,2,14,84,97,15,24,48,-1);
        printargs(84,51,-1);
        printargs(-1);
        printargs(1,-1);
        return 0;
    }
    
    
  • 相关阅读:
    抓老鼠啊,亏了还是赚了
    币值转换
    2019春第七周作业
    2019春第六周作业
    2019春第五周作业
    2019年春季学期第四周作业
    2019年春季学期第三周作业
    2019年春季学期第二周作业
    在人生路上对我影响最大的三位老师
    第七周作业
  • 原文地址:https://www.cnblogs.com/passedbylove/p/4427828.html
Copyright © 2011-2022 走看看