2012-08-26 63 views
0

當我們使用printf()具有不同像printf()中任意數量的參數。這在C編程中稱爲什麼?

printf("Hello"); 

printf("%d",a); 

printf("%d%d",b,c); 

這是爲什麼不叫「超載」的參數的數目(使用同樣的方法與不同的任務進行)? 如果它是重載,那麼爲什麼C不被視爲面向對象的編程語言?

+0

printf是一個函數,而不是一個方法。一個方法是一個Class的函數。類是「面向對象編程」語言的概念。 C只有結構,但你可以在C中使用面向對象的概念進行編程。 – pce

+0

你可以通過'stdarg.h' – lightburst

回答

2

這不是方法重載。只是碰巧printf收到一個可選的vargs作爲第二個參數,也就是一個可變參數列表。

int printf(const char * format,...);

將格式化數據打印到 stdout向標準輸出(stdout)寫入格式爲format參數指定的數據序列 。格式 參數後,該函數至少需要格式中指定的附加參數 。

3

這是爲什麼不叫 「超載」

因爲你使用相同的功能

int printf(const char *restrict format, ...); 

一個用於重載前提是必須有不同的功能/方法命名相同。在這裏,我們只有一個功能,雖然非常靈活,這要歸功於可變參數功能。

0

面向對象編程是指包含封裝,消息傳遞,繼承和多態的範型。換句話說,OO意味着定義classvirtual函數覆蓋。這與重載不同,後者是根據參數的類型在函數中執行不同的操作。

printf()做什麼既不是超載也不覆蓋。這是一個可變長度的參數列表。

+0

謝謝你的解釋..我明白不同之處它們之間... –

相關問題