利用C函数库自带 stdarg.h实现
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
int add(char *format, ...)
{
va_list ap;
va_start(ap,format);
char *str1;
char *str2;
int num1,num2;
if(*(format + 1) == 's')
{
str1 = va_arg(ap, char *);
num1 = atoi(str1);
}
else
num1 = va_arg(ap, int);
if(*(format + 4) == 's')
{
str2 = va_arg(ap, char *);
num2 = atoi(str2);
}
else
num2 = va_arg(ap ,int);
va_end(ap);
int sum;
sum = num1 + num2;
return sum;
}
int main()
{
printf("sum = %d\n", add("%d %d", 11, 22));
printf("sum = %d\n", add("%s %s", "11", "22"));
printf("sum = %d\n", add("%d %s", 11, "22"));
return 0;
}
编译:
cc -o add3 add3.c
./add3
参数传值 char只能传一个字符
如果传递字符串需要使用指针char *传递!!!