国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++中va_list,va_start,va_arg,va_end的使用和原理

2019-11-06 06:47:56
字體:
來源:轉載
供稿:網友

先附一段代碼:

#include <iostream>#include <cstdarg> //該頭文件中包含后面va_list.va_start等函數using namespace std;int sum(int count, ...){	if (count <= 0)		return 0;	va_list arg_ptr;	va_start(arg_ptr, count);	int sum = 0;	for (int i = 0; i < count; i++)		sum += va_arg(arg_ptr, int);	va_end(arg_ptr);	return sum;}int main(int argc, char *argv[]){	cout << sum(5, 1, 2, 3, 4, 5) << endl;	return 0;}代碼中va_list,va_start,va_arg,va_end等函數是C/C++中用來解決變參問題時候的方法。

(1)va_list 定義了一個指針arg_ptr, 用于指示可選的參數.(2)va_start(arg_ptr, argN)使 參數列表指針arg_ptr指向函數參數列表中的第一個可選參數,argN是位于第一個可選參數之前的固定參數, 或者說最后一個固定參數.(3)va_arg(arg_ptr, type)返回參數列表中指針arg_ptr所指的參數, 返回類型為type. 并使指針arg_ptr指向參數列表中下一個參數.返回的是可選參數, 不包括固定參數.(4)va_end(arg_ptr)清空參數列表, 并置參數指針arg_ptr無效.

VA_LIST的用法:

(1)首先在函數里定義一具VA_LIST型的變量,這個變量是指向參數的指針;(2)然后用VA_START宏初始化變量剛定義的VA_LIST變量,使其指向第一個可變參數的地址;(3)然后用VA_ARG返回可變的參數,VA_ARG的第二個參數是你要返回的參數的類型(如果函數有多個可變參數的,依次調用VA_ARG獲取各個參數);(4)最后用VA_END宏結束可變參數的獲取。使用VA_LIST應該注意的問題:參考:

http://www.cnblogs.com/dongsheng/p/4001555.html

http://www.cnblogs.com/yongssu/p/4677556.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 巴彦淖尔市| 南昌市| 慈利县| 政和县| 元氏县| 丹巴县| 诸暨市| 中江县| 宝丰县| 黄大仙区| 兰州市| 四子王旗| 胶州市| 二连浩特市| 安仁县| 襄垣县| 泰安市| 金湖县| 吉安县| 五大连池市| 湘潭市| 平阴县| 石首市| 鸡西市| 全南县| 阳东县| 新民市| 揭东县| 公主岭市| 武功县| 葫芦岛市| 嵩明县| 高阳县| 手游| 克拉玛依市| 万宁市| 琼中| 萨迦县| 鄂州市| 沙湾县| 南汇区|