您的位置:首页 > 其它

2、多参数函数设计方法总结

2015-04-18 17:30 645 查看
// 多参数函数设计1.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include <stdio.h>

#include <stdarg.h>

#include <stdlib.h>

double add(char *str,...)

{

va_list marker; //定义该参数指向参数的指针

double result = 0.0; //marker列表的当前值变量

va_start(marker, str);//初始化va_list变量,marker指向堆栈的地址

while(*str)

{

if(*str == '%')

{

switch(*(++str))

{

//判断str的值,然后返回marker列表的当前值,并指向列表的下一个位置

case 'd':result += va_arg(marker, int);//返回可变参数

break;//be careful!

case 'f':result += va_arg(marker, double);

break;

}

}

str++;

}

va_end(marker);//定义marker = ((viod*)0),是marker不再指向堆栈

return result;

}

int _tmain(int argc, _TCHAR* argv[])

{

double result;

result = add("%d%d%f",6,2,4.8);

printf("result = %f\n",result);

system("pause");

return 0;

}

要点:

1、va_list()是C语言中解决可变参数的一组宏。

2、首先定义va_list类型变量,该变量是指向参数的指针。

3、然后用va_start()宏初始化ca_list变量,如va_start(marker, str),这里有两个变量,一个是类型变量marker,另一个用str来指定位置。

4、va_arg()返回可变参数,如add()中返回了输入的具体数值。 va_arg(marker, int)这个返回了输入的具体数值,这里两个参数(类型变量,返回值类型)。

5、va_end()结束可变参数的获取。多个参数,会依次调用 va_arg(marker, int)宏来获取各个参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐