1
我可以在不檢查長度的情況下將可變長度參數傳遞給函數! 這就是我可以做一個List或別人的東西,並將其傳遞給一個可變長度的參數函數。 我知道我們可以通過va_list來實現這個功能; 但現在,我們得到一個參數列表,我們需要計算長度,然後也許我們應該定義一些變量,並通過它們, 我們可以讓它更方便嗎?將可變長度參數傳遞給函數而不檢查它的長度?
我可以在不檢查長度的情況下將可變長度參數傳遞給函數! 這就是我可以做一個List或別人的東西,並將其傳遞給一個可變長度的參數函數。 我知道我們可以通過va_list來實現這個功能; 但現在,我們得到一個參數列表,我們需要計算長度,然後也許我們應該定義一些變量,並通過它們, 我們可以讓它更方便嗎?將可變長度參數傳遞給函數而不檢查它的長度?
您可以隨時在表明它完成了列表的末尾添加一個特殊的「標誌物」的說法,像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];
}
}
這不是基於VAR-ARGS。 –
不,它不是。但它有效,而且我多次看到它在行動。 –
另外,這不會編譯。 'args [i]'是'char'類型的;你不能把它分配給'p'。 –