2011-08-21 93 views
1

我可以在不檢查長度的情況下將可變長度參數傳遞給函數! 這就是我可以做一個List或別人的東西,並將其傳遞給一個可變長度的參數函數。 我知道我們可以通過va_list來實現這個功能; 但現在,我們得到一個參數列表,我們需要計算長度,然後也許我們應該定義一些變量,並通過它們, 我們可以讓它更方便嗎?將可變長度參數傳遞給函數而不檢查它的長度?

回答

1

您可以隨時在表明它完成了列表的末尾添加一個特殊的「標誌物」的說法,像NULL

char **args = { "one", "two", NULL } 
function(args); 
... 
void function (char **args) { 
    char *p; 
    int i = 0; 
    p = args[i]; 
    while(p != NULL) { 
    ... 
    i++; 
    p = args[i]; 
    } 
} 
+0

這不是基於VAR-ARGS。 –

+0

不,它不是。但它有效,而且我多次看到它在行動。 –

+0

另外,這不會編譯。 'args [i]'是'char'類型的;你不能把它分配給'p'。 –

相關問題