C語言之可變參數函數

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdio.h>
#include <stdarg.h>		//包含很多可變參數的宏的頭文件

#include <string.h>		//有關於字符串的函數

//可以接受多個參數加法的可變參數函數
int add(int num, ...)	//...表示可變的參數,第一個參數爲個數
{
	int last = 0.0;
	va_list argp;			//創建一個char類型的指針
							//typedef char *  va_list;
	va_start(argp, num);	//讀取有num個參數,把地址放在argp
	for (int i = 0; i < num; i++)
	{
		int temp = va_arg(argp, int);//讀取參數,挨個讀取
		printf("%d\n", temp);  
		last += temp;
	}
	va_end(argp);	//結束讀取
	return last;

}

//可以接受多個字符串的可變參數函數
//可變參數至少自己定義一個參數
void go(int num, ...)
{
	va_list argp;	//定義指針,用於存儲地址

	va_start(argp,num);	//代表有num個參數
	for (int i = 0; i < num; i++)
	{
		//char str[50];
		//strcpy(str,va_arg(argp,char *));
		//printf("%s",str);
		printf("%s", va_arg(argp, char *));	//以字符串的形式讀取參數
	}
	va_end(argp);	//結束調用

}


int main()
{
	int num = 5;
	printf("加法結果爲%d\n",add(num,1,2,3,4,5));
	go(5,"你好\n","明天\n","山陰路的夏天\n","熱河\n","杭州\n");
	system("pause");
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章