C和C 的區別 02 函式檢測

2021-09-24 12:26:39 字數 1347 閱讀 7351

2019獨角獸企業重金招聘python工程師標準》

c和c++在函式方面的區別主要體現在三個方面:函式檢測、內聯函式和函式過載。

c++中所有的變數和函式都必須有型別,c語言中的預設型別在c++中是不合法的。

在c語言中

f();表示返回值為int,接受任意引數的函式

f(i);表示返回值和引數都預設為int。

int f(void);表示返回值為int的無參函式

c++中

int f( );和int f(void)具有相同的意義,都表示返回值為int的無參函式

c++更加強調型別,任意的程式元素都必須顯示指明型別

//c語言中

#include f(i)//預設引數型別為int

g()//預設返回值為int

int main(int argc, char *ar**)

預設引數和佔位符
//c++中如果函式定義時設定了預設值,而呼叫時沒有提供值,系統則會根據預設值初始化實參。

void func(int i = 1, float f = 2.0f, double d = 3.0)

int main(void)

但是只有後部分引數可以。如果某個引數是預設引數,則後面的引數都必須是預設引數。

//下面兩種情況都可以

void func(int i, float f = 2.0f, double d = 3.0) ;

void func(int i, float f, double d = 3.0) ;

//但是這樣就不可以

void func(int i, float f = 2.0f, double d) ;

函式佔位引數
/* 佔位引數表示只有引數型別,而沒有引數名。 一般情況下,在函式體內部無法使用佔位引數 */

int func(int a, int b, int )

int main(int argc, char *ar**)

/* 可以將佔位引數與預設引數結合起來使用。 意義: 為以後程式的擴充套件留下線索(不常使用) 相容c語言程式中可能出現的不規範寫法 */

//c++可以宣告佔位符引數,佔位符引數一般用於程式擴充套件和對c**的相容

int func(int a, int b, int = 0) //int = 0:預設+佔位引數(混搭)

int main(int argc, char *ar**)

C和C 的區別 02 函式檢測

c和c 在函式方面的區別主要體現在三個方面 函式檢測 內聯函式和函式過載。c 中所有的變數和函式都必須有型別,c語言中的預設型別在c 中是不合法的。在c語言中 f 表示返回值為int,接受任意引數的函式 f i 表示返回值和引數都預設為int。int f void 表示返回值為int的無參函式 c ...

C和C 區別 函式過載

一 從編譯鏈結的角度考慮函式在c和c 中的區別 1 c語言中函式生成的符號依靠函式名,所以不允許函式名相同,如果兩個函式名相同的函式在同乙個檔案中,那麼在編譯的時候就會生成兩個相同的符號,將這兩個相同的符號儲存在符號表中,那麼我們在鏈結的時候到底使用哪乙個呢?所以不允許函式名相同 2 在c 中,函式...

C和C 的區別 04 函式過載

函式過載 overload 用同一函式名定義不同的函式,當函式名和不同引數搭配時函式的意義不同。也就是說,函式過載就是,名字一樣,引數不同。引數不同有三種 個數不同 型別不同 順序不同。形參的名字和返回值相不相同無所謂。來看看編譯器呼叫過載函式的準則 看不懂或者覺得暈可以不看 函式過載的注意事項 i...