是否可以爲C中的默認參數設置值?例如:C中的默認參數
void display(int a, int b=10){
//do something
}
main(){
display(1);
display(1,2); // override default value
}
Visual Studio 2008中,投訴,有在-void顯示了語法錯誤(INT A,INT B = 10)。如果這在C中不合法,那有什麼選擇?請告訴我。謝謝。
是否可以爲C中的默認參數設置值?例如:C中的默認參數
void display(int a, int b=10){
//do something
}
main(){
display(1);
display(1,2); // override default value
}
Visual Studio 2008中,投訴,有在-void顯示了語法錯誤(INT A,INT B = 10)。如果這在C中不合法,那有什麼選擇?請告訴我。謝謝。
的默認參數是一個C++特徵。
C沒有默認參數。
有在C.沒有默認參數,你可以通過這個獲得
的一種方法是空指針傳遞,然後如果傳遞NULL值設置爲默認值。這很危險,但我不會推薦它,除非你真的需要默認參數。
例
function (char *path)
{
FILE *outHandle;
if (path==NULL){
outHandle=fopen("DummyFile","w");
}else
{
outHandle=fopen(path,"w");
}
}
這是不可能在標準C.一種替代方法是在參數編碼成函數名,像例如
void display(int a){
display_with_b(a, 10);
}
void display_with_b(int a, int b){
//do something
}
+1。我也喜歡在[這個答案](http://stackoverflow.com/a/1472310/790070)評論中的做法,其中函數的名稱包括它所需的參數數目。 – 2012-02-07 23:15:56
不是這樣的......
你可以使用一個int數組或一個可變參數,並在你的函數中丟失的數據填寫。儘管如此,你會失去編譯時檢查
事實上,它在C中不合法。C也沒有超載。 – Mysticial 2012-02-07 23:09:42
可能的重複:http://stackoverflow.com/questions/1472138/c-default-arguments – 2012-02-07 23:11:27
http://stackoverflow.com/questions/2988038/default-values-on-arguments-in-c-functions-and- function-overloading-in-c – 2014-04-23 05:52:53