C - 带有可变参数的函数

标签 c

我想制作一个可以同时接受可变数量参数的函数来做这样的事情:

void function(char *args[]){ ... } 

int main(){
   function("a","b","c");
}

最佳答案

您正在寻找可变函数

检查这个例子:

#include <stdio.h>
#include <stdarg.h>

double average(int num, ...) {

   va_list valist;
   double sum = 0.0;
   int i;

   /* initialize valist for num number of arguments */
   va_start(valist, num);

   /* access all the arguments assigned to valist */
   for (i = 0; i < num; i++) {
      sum += va_arg(valist, int);
   }
    
   /* clean memory reserved for valist */
   va_end(valist);

   return sum/num;
}

int main(void) {
   printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2, 3, 4, 5));
   printf("Average of 5, 10, 15 = %f\n", average(3, 5, 10, 15));
}

输出:

Average of 2, 3, 4, 5 = 3.500000
Average of 5, 10, 15 = 10.000000

阅读更多 Variadic Functions in CReference .


提示:Think twice before using Variadic functions .正如@user694733 评论的那样,它们没有编译时类型安全性或针对无效参数数量的保护。通常可以通过更好的程序设计来避免它们。

关于C - 带有可变参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70741013/

相关文章:

C编程: a program that counts the number of words in a text file?

c - 之前没有用malloc分配内存的情况下进行memcpy

c memset函数之谜

c - c语言中的隐式int

c - 黑客排名 : Project Euler#1

c - 如何用最少的代码高效地打印数组元素的所有排列

C 可变参数宏无法编译

c - 以编程方式检索 OS X 命令行应用程序的绝对路径

c - 哪里可以下载 dwmapi.lib?

c - 如何使用scanf获取空白输入