C和C 的區別第一部分

2021-09-01 05:56:54 字數 914 閱讀 6889

c++在定義時可以給函式預設值

1.int sum(int a,int b=10)

return a+b;

}在呼叫sum 函式時不給引數b的值系統會預設b的值為10;

2.c++在給函式預設值時是從左至右如

int sum(int a=1,int b,int c)

int sum(int a=1,int b,int c)

是錯的。因為系統會產生二義性不知道該給哪個引數賦值。

c++的內聯函式是在編譯時 在呼叫點把內聯函式的**展開在呼叫點處,並不會產生函式符號

類如:inline int sum (int a,int b)

main()

int x=10;

int y=20;

sum(x,y);

編譯時就是

main()

int x=10;

int y=20;

x+y;

並不會給sum函式開闢個新棧,而是直接的**替換。

看起來內聯函式和巨集很相像,那他們的區別在哪?

區別就是 巨集是單純的字元替換,在預編譯的階段,不會做任何的詞法解析,型別檢查,也就是說巨集出錯的可能性非常高,不安全。而inline內斂函式是在編譯時期,會進行詞法解析,型別檢查,詞法、型別有誤就會編譯失敗。所以說,inline相當於安全版的巨集。

內聯函式只在本檔案可見。

最後值得注意的是內斂函式只算乙個給編譯器的建議,也就是說編譯器可能不會使用內斂,因為某些函式使用**替換會導致錯誤,比如遞迴函式,遞迴的核心就是開闢棧幀遞迴資料然後層層計算最後收尾,簡單的**替換確定不了遞迴的尾巴?

c語言中函式名不能重複定義。

c++中函式的命名可以重複,但重名的函式提供的引數不能相同。因為c++的函式符號的產生是由函式名和引數型別決定的。

函式的過載必須得在同乙個作用域內。

C 第一部分總結

c 一 一丶復合型別 1指標與引用 一 指標 1 指標的特點 指標持有乙個物件的位址,稱為指標 指向 該物件 通過指標可以間接操縱它指向的物件 2 指標的定義 型如int a char a,b 3 取位址符 使用取位址符 型如int pi ival 4 特殊 void型別 可以持有任何型別的位址值,...

第一部分 C 語言

第一部分 c 語言 330頁 10 33天 第一章 c 與.net框架 一 net框架 cts common type system 公共型別庫 cls common language system 公共語言規範 fcl framework class library 框架型別庫 clr提供程式執行...

Axure RP 第一部分

axure rp是乙個專業的快速原型設計工具。axure 發音 ack sure 代表美國axure公司 rp則是rapid prototyping 快速原型 的縮寫。axure rp是美國axure software solution公司旗艦產品,是乙個專業的快速原型設計工具,讓負責定義需求和規格...