何時使用指標引數 引用引數 按值傳遞?

2021-08-28 11:42:33 字數 1762 閱讀 8292

1、什麼是引用?如何使用引用?為什麼要使用引用?

1)什麼是引用?

引用變數是一種偽裝指標,它允許為變數建立別名(另乙個名稱)。

在初始化乙個引用變數時,必須對其進行初始化。

2)何時使用引用?

引用變數主要被用作處理結構和類物件的函式的引數。

3)為什麼要使用引用?

4)返回引用時的注意事項

2、什麼時候應使用引用?什麼時候應使用指標?什麼時候又應按值傳遞呢?

對於使用傳遞的值而不作修改的函式:

如果資料物件很小,如內建資料型別或小型結構,則按值傳遞。

如果資料物件是陣列,則使用指標,因為這是唯一的選擇,並將指標宣告為指向const的指標。

如果資料物件是較大的物件,則使用const指標或const引用,以提高程式的效率。這樣可以節省複製結構所需的時間和空間

如果資料物件是類物件,則使用const引用。傳遞類物件引數的標準方式是按引用傳遞。

對於修改呼叫函式中資料的函式:

如果資料物件是內建資料型別,則使用引用。如fixit(&x),其中x是int型,則很明顯,該函式將修改x

如果資料物件是陣列,則只能使用指標

如果資料物件是結構,則使用引用或指標。

如果資料物件是類物件,則使用引用。

即,資料物件為內建資料型別時,若引數不能被修改,則使用按值傳遞;若要修改引數,則使用引用。

資料物件是陣列時,只能使用指標。

資料物件是較大的物件或結構,則可以使用指標或引用。

資料物件是類物件,則使用引用。

3、#ifndef mytime0_h

#define mytime0_h

class time

;#endif // mytime0_h

#include#include"mytime0.h"

time::time()

time::time(int h, int m)

void time::addmin(int m)

void time::addhr(int h)

void time::reset(int h, int m)

time time::sum(const time &t) const

void time::show()const

{ std::cout<#include"mytime0.h"

int main()

{ using std::cout;

using std::endl;

time planning;

time coding(2,40);

time fixing(5,55);

time total;

cout<<"planning time = ";

planning.show();

cout《將引數宣告為引用的目的的提高效率。返回物件將建立物件的拷貝,而呼叫函式可以使用它。

如果返回型別為time &,則引用的將是sum物件。但由於sum物件是區域性變數,在函式結束時將被刪除,因此引用將指向乙個不存在的物件。然而,使用time返回型別意味著程式將在刪除sum之前構造它的拷貝,呼叫函式將得到該拷貝。

注意:不要返回指向區域性變數或臨時物件的引用。函式執行完畢後,區域性變數和臨時物件將消失,引用將指向不存在的資料。

何時使用引用引數

節選自己c primer plus 5 使用引用引數的主要原因有兩個 1.程式設計師能夠修改呼叫函式中的資料物件 2.通過傳遞引用而不是整個資料物件,可以提高程式的執行速度 當資料物件較大時 結構和類物件 第二個原因最重要。這些也是使用指標引數的原因。這是有道理的,因為引用引數實際上是基於指標的 的...

java引數傳值 傳引用

1 結論 2 傳值和傳引用區別 例項1 傳值 void method1 7 void method2 13 voidchange1 stringbuffer sb 17 voidchange2 stringbuffer sb 呼叫method1 螢幕列印結果為 helloworld 呼叫method...

Python按值傳遞引數和按引用傳遞引數

python按值傳遞引數和按引用傳遞引數 按值傳遞引數 使用乙個變數的值 數字,字串 放到實參的位置上 注 傳遞過去的是變數的副本,無論副本在函式中怎麼變,變數的值都不變 傳遞常量 傳遞常量 定義乙個函式,輸出 歡迎,接收到的引數 name defhuanying name print 歡迎 nam...