C语言虽然没有C++的函数重载特性,但也可以实现变参,但要保证第一个参数信息的完整性。
拓展:
定义变参函数时,第一个参数一般是字符串,携带后续变参的类型和数量信息,变参使用三点来表示,如:
void sumup(const char *info, ...);
再使用va_list、va_start()、va_arg()和va_end()来索引和控制这些变参,如:
va_list p;
va_start(p, info);
va_arg(p, int);
va_end(p);
假设调用sumup()时,参数是这样的:sumup("someinfo", 1, 'a', 0.618); 那么sumup()就可以了根据第一个字符串参数someinfo来索引这些参数,当然,someinfo的具体格式约定我们可以自定义,就跟printf()和scanf()函数一样,比如使用#i代表int,#@代表字符串都可以,是自定义的。