这是什么意思?
void message(int x, int y, ...)
我不理解什么是...。有人可以解释一下吗?
void message(int x, int y, ...)
我不理解什么是...。有人可以解释一下吗?
未指定/可变数量的参数。要处理这样的函数,您需要使用va_list类型和va_start、va_arg和va_end函数:
以下示例来自此处:
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
int maxof(int, ...) ;
void f(void);
main(){
f();
exit(EXIT SUCCESS);
}
int maxof(int n args, ...){
register int i;
int max, a;
va_list ap;
va_start(ap, n args);
max = va_arg(ap, int);
for(i = 2; i <= n_args; i++) {
if((a = va_arg(ap, int)) > max)
max = a;
}
va_end(ap);
return max;
}
void f(void) {
int i = 5;
int j[256];
j[42] = 24;
printf("%d\n",maxof(3, i, j[42], 0));
}
您可以在这里找到更多详细信息。该文档与C语言中的可变参数相关。
...表示将最后一个参数作为数组或一系列参数传递。
()
和(...)
不是同一个意思。一个空的参数列表表示函数接受固定但未指定数量的参数。(...)
表示它接受可变数量的参数(并且相当无用,因为函数将永远无法访问这些参数,除非至少有一个固定参数)。 - caf