指標和引用作為返回值

2021-08-24 17:45:58 字數 780 閱讀 3946

一、 函式返回值

1.如果返回值小於4byte 用暫存器eax帶回返回值

2.如果返回值大於4byte小於8btye,用兩個暫存器eax edx帶回返回值

3.如果返回值大於8byte,在呼叫前main函式中產生臨時量接受返回值

二、臨時量生成的三種情況

1.函式呼叫之前產生,目的是為了接受函式的返回值

2.函式的return語句處

3.函式呼叫之後

三、引用的條件

1.必須進行初始化

2.必須能取位址

內建型別產生的臨時量都是常量 通過eax edx帶回 不能修改

自定義型別產生的臨時量是變數 可以進行修改

四、函式傳參

1.傳值

函式呼叫過程會產生乙個臨時變數用形參的形式代替,

最終把實參得值傳給新分配的臨時變數,這種傳值避免了

函式惡意修改所傳的值;

2.傳位址

傳位址壞處就是不能控制該值被程式惡意修改

好處就是如果程式需要改變這個值 那麼就可以改變 無束縛

3.傳引用

傳引用並沒有引用新的變數 只是給已存在的變數起了乙個別名

編譯器不會為這個別名開闢記憶體空間 這個引用和引用的變數使用同一記憶體空間

五、普通型別作為返回值

//函式返回值為普通型別的返回值接收情況

int getint()

int main ()

int main()

int main()

指標和引用作為函式返回值

例子一 引用作為函式返回值 includeusing namespace std int f2 int a,int i int main int n f2 a,3 f2 a,3 14 相當於a 3 cout 例子二 指標作為函式返回值 includeusing namespace std 返回乙個指...

引用作為返回值 多型

1 引用作為返回值,必須遵守以下規則 1 不能返回區域性變數的引用。這條可以參照effective c 1 的item 31。主要原因是區域性變數會在函式返回後被銷毀,因此被返回的引用就成為了 無所指 的引用,程式會進入未知狀態。2 不能返回函式內部new分配的記憶體的引用。這條可以參照effect...

將引用作為函式返回值

要以引用返回函式值,則函式定義時必須遵循以下格式 型別識別符號 函式名 形參列表及型別說明 可見,以引用返回函式值,定義函式時需要在函式名前加 引用作為函式的返回值時,函式的返回值可以理解為函式返回了乙個變數 事實上,函式返回引用時,它返回的是乙個指向返回值的隱式指標 因此,值為引用的函式可以用作賦...