我知道會有爲每個函數的參數列表。我們的問題是
printf()函數也有參數列表和事件雖然我們給'n'no.of參數 printf()函數不會失敗,然後
我想知道wht將用於printf()的參數列表部分,其中需要infinate參數列表?
我知道會有爲每個函數的參數列表。我們的問題是
printf()函數也有參數列表和事件雖然我們給'n'no.of參數 printf()函數不會失敗,然後
我想知道wht將用於printf()的參數列表部分,其中需要infinate參數列表?
的printf的簽名看起來是這樣的:
int printf (const char * format, ...);
如果一個函數有一個「...」作爲其最後一個參數,它可以接收任意數量的參數。在該函數中,您可以使用va_arg來訪問這些參數。下面是cplusplus.com一個例子:
/* va_start example */
#include <stdio.h>
#include <stdarg.h>
void PrintFloats (int amount, ...)
{
int i;
double val;
printf ("Floats passed: ");
va_list vl;
va_start(vl,amount);
for (i=0;i<amount;i++)
{
val=va_arg(vl,double);
printf ("\t%.2f",val);
}
va_end(vl);
printf ("\n");
}
int main()
{
PrintFloats (3,3.14159,2.71828,1.41421);
return 0;
}
注意的是,這裏PrintFloats要求您的附加參數的數目傳遞。 printf不需要這樣做,因爲它可以通過計算格式字符串中的標記來推斷您傳入的參數數量。
的關鍵詞是可變參數,並且它們與宣...
您打算完成這項工作嗎?或者我們應該繼續前進,並且因爲它沒有真正回答問題而令人信服。 –
它是完整的,請隨時downvote。我認爲網絡上有很多關於可變參數的解釋,並且在這裏不需要重複 - 這就是爲什麼我保持我的答案簡短的原因。 – thiton
-1如果用於發佈「不完整」答案的參數是「網上提供的大量解釋」,那麼不應該麻煩回答。如果有人在意發佈答案,那麼最好是正確和完整的。 –
printf的是「可變參數」功能。這意味着參數列表最後聲明爲...
,並且在執行printf時,使用va_list
,va_start
,va_arg
等宏從可變長度列表中提取參數。
(另外,從技術上講,參數列表並不是無限的 - 它受堆棧大小的限制。) – Vicky
谷歌「c可變數量的參數」,並簽出'' –
-1 *研究努力*。 StackOverflow不是谷歌的機械土耳其人。如果你谷歌你的問題標題,你會得到答案。 –
在這裏發佈這個問題之前,你可以簡單地用它搜索它! –