程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> (C語言)可變參數列表

(C語言)可變參數列表

編輯:關於C

C函數要在程序中用到以下這些宏:

void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );

 

va_list:用來保存宏va_start、va_arg和va_end所需信息的一種類型。為了訪問變長參數列表中的參數,必須聲明
va_list類型的一個對象 定義: typedef char * va_list;
va_start:訪問變長參數列表中的參數之前使用的宏,它初始化用va_list聲明的對象,初始化結果供宏va_arg和
va_end使用;
va_arg: 展開成一個表達式的宏,該表達式具有變長參數列表中下一個參數的值和類型。每次調用va_arg都會修改
用va_list聲明的對象,從而使該對象指向參數列表中的下一個參數;
va_end:該宏使程序能夠從變長參數列表用宏va_start引用的函數中正常返回。
va在這裡是variable-argument(可變參數)的意思.
這些宏定義在stdarg.h中,所以用到可變參數的程序應該包含這個頭文件.下面我們寫一個簡單的可變參數的函數,改函數至少有一個整數參數,第二個參數也是整數,是可選的.函數只是打印這兩個參數的值.


問題描述:

運用可變參數列表的方式求n個整形數中的最大值,並且輸出。

 

代碼如下:

 

 

/********可變參數列表*********/
#include
#include    

/* ANSI標准形式的聲明方式,括號內的省略號表示可選參數 */
int Max(int n,...)	/*求n個數的最大值*/ 
{
	va_list arg;	/* 定義保存函數參數的結構 */ 
	int max=0;
	int i;
	va_start(arg,n);  /* argp指向傳入的第一個可選參數,msg是最後一個確定的參數 */
	for(i = 0;imax)
		{
			max = tmp;
		}
	}
	va_end(arg); /*結束可變參數的獲取*/
	return max;
}

int main()
{
	int ret = Max(10,1,2,3,4,5,6,7,8,9,10);
	printf("%d\n",ret);
	return 0;	
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved