c 標準庫 -示例** 描述
c 庫巨集 void va_start(va_list ap, last_arg) 初始化 ap 變數,它與 va_arg 和 va_end 巨集是一起使用的。 last_arg 是最後乙個傳遞給函式的已知的固定引數,即省略號之前的引數。
這個巨集必須在使用 va_arg 和 va_end 之前被呼叫。
** 宣告
下面是 va_start() 巨集的宣告。
void va_start(va_list ap, last_arg);
** 引數
ap – 這是乙個 va_list 型別的物件,它用來儲存通過 va_arg 獲取額外引數時所必需的資訊。
last_arg – 最後乙個傳遞給函式的已知的固定引數。
** 返回值
na
#include
#include
intsum
(int,.
..);
intmain
(void
)int
sum(
int num_args,..
.)va_end
(ap)
;return val;}--
----
----
----
----
----
----
----
----
----
----
----
-讓我們編譯並執行上面的程式,這將產生以下結果:
10、20 和 30 的和 =
604、20、25 和 30 的和 =
79
c 標準庫 - c 標準庫 -示例** 描述
c 庫巨集 type va_arg(va_list ap, type) 檢索函式引數列表中型別為 type 的下乙個引數。它無法判斷檢索到的引數是否是傳給函式的最後乙個引數。
** 宣告
下面是 va_arg() 巨集的宣告。
type va_arg(va_list ap, type)
** 引數
ap – 這是乙個 va_list 型別的物件,儲存了有關額外引數和檢索狀態的資訊。該物件應在第一次呼叫 va_arg 之前通過呼叫 va_start 進行初始化。
type – 這是乙個型別名稱。該型別名稱是作為擴充套件自該巨集的表示式的型別來使用的。
** 返回值
該巨集返回下乙個額外的引數,是乙個型別為 type 的表示式。
#include
#include
intsum
(int,.
..);
intmain()
intsum
(int num_args,..
.)va_end
(ap)
;return val;}--
----
----
----
----
----
----
----
----
----
----
----
讓我們編譯並執行上面的程式,這將產生以下結果:
15 和 56 的和 =
71
c 標準庫 - c 標準庫 -示例** 描述
c 庫巨集 void va_end(va_list ap) 允許使用了 va_start 巨集的帶有可變引數的函式返回。如果在從函式返回之前沒有呼叫 va_end,則結果為未定義。
** 宣告
下面是 va_end() 巨集的宣告。
void va_end(va_list ap)
** 引數
ap – 這是之前由同一函式中的 va_start 初始化的 va_list 物件。
** 返回值
該巨集不返回任何值。
#include
#include
intmul
(int,.
..);
intmain()
intmul
(int num_args,..
.)va_end
(ap)
;return val;}--
----
----
----
----
----
----
----
----
----
----
----
--讓我們編譯並執行上面的程式,這將產生以下結果:15*
12=180
C中可變引數函式
先說明規則 1.函式的可變引數中必須有一條確定的引數 至少一條 2.可變引數列表必須從頭開始訪問,訪問到尾部 3.可變引數列變不能確定引數數目 編譯時才能確定 4.可變引數的變數型別是不確定的,編譯時必須確定引數型別,變數的引數型別不確定時,函式的結果未知。引數使用方法 include va lis...
函式中的可變引數c
在資料的大小,個數,型別是未知的情況下,會用到可變引數。include include include 標準引數,解決可變引數問題 intadd int num,va end argp 結束讀取 return res void main include include include 標準引數,解決...
C 中函式中的可變引數
using system using system.collections.generic using system.linq using system.text vfun values console.writeline vfun aaa bbb ccc console.writeline say...