天天看點

c語言函數定義_萬能的C語言,也能像其他語言那樣定義帶“預設參數”的函數嗎?...有“預設參數”的C語言函數

使用C++開發過程式時,定義函數可以指定預設參數,例如 void fun(int x, int y=3); 在調用 fun() 時第二個參數可以不傳遞,此時 fun() 函數預設第二個參數等于 3,例如 f(1) 就相當于 f(1,3)。這是一個很好用的特性,那麼在C語言程式開發中,是否也可以定義帶“預設參數”的函數呢?

c語言函數定義_萬能的C語言,也能像其他語言那樣定義帶“預設參數”的函數嗎?...有“預設參數”的C語言函數

C語言程式開發中,是否也可以定義帶“預設參數”的函數呢

有“預設參數”的C語言函數

首先應該清楚,目前C語言還沒有原生支援帶預設參數的函數,也就是說下面這樣的C語言代碼是非法的:

void fun(int x, int y =3){ return x+y;}fun(1); // 不等價于 fun(1, 3)
           

但是,C語言作為一門極其靈活的程式設計語言,又的确可以借助其他基本文法實作這樣的需求。不過要在C語言中定義帶“預設參數”的函數可能略微有些繁瑣,當然了,方法可能不止一種,本文不打算從枯燥的理論層面讨論這些方法,而是給出一個執行個體,希望能夠起到抛磚引玉的作用。

c語言函數定義_萬能的C語言,也能像其他語言那樣定義帶“預設參數”的函數嗎?...有“預設參數”的C語言函數

希望能夠起到抛磚引玉的作用

假設我們希望在某段C語言程式中定義一個帶預設參數的函數,它可以接收兩個參數,并将之列印出來:

double f(int i, double x){ printf("i=%d, x=%0.2f