C语言中的可变参数
?我在學C語言的時候?qū)瘮?shù)printf()特別好奇,因為它后面的參數(shù)是可以變的,很長一段時間我也不明白這是怎么實現(xiàn)的,現(xiàn)在附帶說明,寫得有點不倫不類:
# include<iostream>
# include<stdarg.h>
using namespace std;double Add(int first, ...)
{va_list para;va_start(para, first);double sum = first;sum += va_arg(para, int);sum += va_arg(para, double);sum += va_arg(para, double);va_end(para);return sum;
}int main()
{printf("%.1lf\n", Add(1, 3, 3.1, 3.2));system("PAUSE");return 0;
}
關(guān)鍵使用到了三個宏,va_start(),va_arg(),va_end(),以及一個va_list類型,這三個宏定義在stdarg.h中。這是C標準庫的一部分。
va_start(va_list para, first_argu) 這個宏類似于創(chuàng)建一個“流”對象,并要用可變參數(shù)前面的一個參數(shù)初始化。具體實現(xiàn)我也不清楚。
va_arg(va_list para, type) 這個宏類似于從“流”中提取可變參數(shù),type是可變參數(shù)類型。
va_end(para) 關(guān)閉“流”
總結(jié)
- 上一篇: Java新鲜东西,带有标签的contin
- 下一篇: Java中的可变参数