C 函数参数

2018-07-10 10:12 更新

学习C - C函数参数

您可以使用const关键字限定一个函数参数,这表示函数会处理参数作为常量。

通常,将const关键字应用于作为指针的参数。

这里是一个带有const参数的函数的例子:

bool hello(const char* pmessage){
   ...
}

具有可变数量参数的函数

以下代码显示了如何使用可变长度参数声明一个函数原型。

double average(double v1, double v2, ...);

省略号表示一个变量参数数量可以跟随前两个固定参数。

可变长度参数列表必须至少有一个固定参数。

要引用参数,请使用指针。

您需要使用三个函数来处理可变数量的参数。

它们称为va_start(),va_arg()和va_end()。

您必须调用va_start()来初始化变量参数列表指针的值功能。此指针必须声明为类型va_list。

va_start()具有以下形式:

void va_start(va_list parg, last_fixed_arg);

此函数接受两个参数:类型为va_list的指针parg,以及为该函数指定的最后一个固定参数的名称。

va_list类型是在stdarg.h中定义的类型。

va_arg()的第一个参数是通过调用va_start()初始化的变量parg。

第二个参数是类型的规范期望找到的参数。

函数va_arg()返回由parg指定的当前参数的值这是存储在值。

它更新指针parg以指向列表中的下一个参数。

va_end()是清理。

它将parg指针重置为NULL。


    #include <stdio.h> 
    #include <stdarg.h> 
      //from www. j  av a  2 s  .c  om
    double average(double v1 , double v2,...);       // Function prototype 
      
    int main(void) 
    { 
      double v1 = 1.5, v2 = 2.5; 
      int num1 = 6, num2 = 5; 
      long num3 = 2L, num4 = 12L; 
      
      printf("Average = %.2lf\n", average(v1, 3.5, v2, 4.5, 0.0)); 
      printf("Average = %.2lf\n", average(1.0, 2.0, 0.0)); 
      printf("Average = %.2lf\n", average( (double)num2, v2,(double)num1, (double)num4,(double)num3, 0.0)); 
      return 0; 
    } 
      
    // Function to calculate the average of two or more arguments 
    double average( double v1, double v2,...) { 
      va_list parg;                      // Pointer for variable argument list 
      double sum = v1 + v2;              // Accumulate sum of the arguments 
      double value = 0.0;                // Argument value 
      int count = 2;                     // Count of number of arguments 
      
      va_start(parg,v2);                 // Initialize argument pointer 
      while((value = va_arg(parg, double)) != 0.0) { 
        sum += value; 
        ++count; 
      } 
      va_end(parg);                                  // End variable argument process 
      return sum/count; 
    } 

上面的代码生成以下结果。



main()函数

main()函数是执行开始的地方。

main()可以有一个参数列表,这样你可以传递参数给main()当你执行一个程序时命令行。

您可以编写main()函数,不带参数或使用两个参数。

当你写参数的main()第一个参数是int类型,并存储一个计数参数,包括程序本身的名称。

main()的第二个参数是一个指向字符串的指针数组。


#include <stdio.h> 
int main(int argc, char *argv[]) 
{ 
  printf("Program name: %s\n", argv[0]); 
  for(int i = 1 ; i<argc ; ++i) 
    printf("Argument %d: %s\n", i, argv[i]); 
  return 0; 
} 

上面的代码生成以下结果。



以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号