C 之初體驗(一) 函式過載和引用

2021-08-20 16:41:07 字數 2444 閱讀 6910

**先來看一段**吧

是不是很好奇為什麼可以是一樣的命名呢?在c中你見過嗎?

下來我們就一起看一下吧!!!

**1、概念:是函式的一種特殊情況,c++允許在同乙個作用域中宣告幾個功能類似的同名函式,這些同名函式的形參列表(引數個數、型別、順序)必須不同,常用來處理實現功能類似資料型別不同的問題。

————兩個過載函式必須在下列乙個或兩個方面有所區別:

(1)函式有不同引數。

(2)函式有不同引數型別,

2、函式的過載的規則:

(1)函式名稱必須相同。

(2)引數列表必須不同(個數不同、型別不同、引數排列順序不同等)。

(3)函式的返回型別可以相同也可以不相同。

(4)僅僅返回型別不同不足以成為函式的過載。

****

1、概念:引用不是新定義乙個變數,而是給已存在的變數取了乙個別名,編譯器不會為引用變數開闢記憶體空間,它和它引用的變數共用同一塊記憶體空間

型別& 引用變數名(物件名) = 引用實體;

void testref()

注意:上述型別必須和引用實體是同種型別的2、引用特性(1)引用在定義時必須初始化

(2)乙個變數可以有多個引用

(3)引用一旦引用乙個實體,再不能引用其他實體

3、使用場景

(1)作為函式形參

void swap(int& left, int& right)

(2)作為函式返回值

int& testrefreturn(int& a)

注意:不能返回棧空間上的引用3、引用和指標的區別(1)相同點底層的實現方式相同,都是按照指標的方式來實現的

(2)不同點

(1)引用在定義時必須初始化,指標沒有要求

(2)一旦乙個引用被初始化為指向乙個物件,就不能再指向其他物件,而指標可以 在任何時候指向任何乙個同型別物件

(3)沒有null引用,但有null指標

(4)在sizeof中含義不同:引用結果為引用型別的大小,但指標始

(5)終是位址*空間所佔位元組個數

(6)引用自加改變變數的內容,指標自加改變了指標指向

(7)有多級指標,但是沒有多級引用

(8)指標需要手動定址,引用通過編譯器實現定址

(9)引用比指標使用起來相對更安全

————*c語言中,函式傳參 有兩種方式*

(1)傳值

`void swap(int

left, int

right)

傳值:在函式呼叫過程中會生成乙份臨時變數,最終把實參的值傳遞給新分配的臨時變數即形參

————優點:避免了函式呼叫的***

————缺點:無法改變形參的值

如果想通過形參改變實參的值,只能通過指標傳遞

(2)傳址

void swap(int* pleft, int* pright)

指標可以解決問題,但不是很形象友好,不安全

是否有一種型別:可以向值一樣傳遞,同時又能達到指標的效果呢?

——————很顯然,我們上述的引用不就有這個功能嗎

void swap(int& left, int& right)

Julia之初體驗(十一)函式2

具有特殊名稱的運算子 一些特殊的表示式對應於具有非顯而易見名稱的函式的呼叫。expression calls a b c hcat a b c vcat a b c d hvcat a adjoint a i getindex a i xsetindex a.ngetproperty a.n xse...

C語言函式初體驗

1.函式的宣告有什麼用?答 所謂宣告 declaration 就是告訴編譯器我要使用這個函式,有時候,你可能會發現及時不寫函式的宣告,程式也是可以正常執行的。但如果你把函式的定義寫在呼叫之後,那麼編譯器可能就會找不著北了。函式必須 先定義,再呼叫 2.函式是否必須宣告才能使用?答 對於函式來說,必須...

C 函式過載 引用 內聯函式

2 函式過載 3 引用 4 內聯函式 在宣告或定義函式時,給函式的引數設定乙個預設值,當使用者對函式進行呼叫時,如果傳遞了實參,則使用使用者傳遞的實參 如果沒有傳遞則使用預設值。預設引數必須從右往左給出 不能在函式宣告和定義的位置同時給出 預設引數在提供時 常量 全域性變數 c語言不支援。相同作用域...