通常在哪些特定情況下使用按引用傳遞? 在 C 中

發布 心理 2024-05-16
9個回答
  1. 匿名使用者2024-02-10

    1.當需要返回引用物件時,需要將引用引數傳遞給函式。

    2.當函式執行完畢後,當函式繼續保持函式的中值時,需要向 non-return 引數傳送乙個參考引數。

    3.當函式需要直接處理傳遞引數時,將傳輸參考引數。

  2. 匿名使用者2024-02-09

    c 中的函式有時會作為每個引用的引數傳遞和返回。 例如:

    int& f(int& a)

    通過引用傳遞引數“是很好理解的:

    在通常的“通過手指傳遞”方法中,函式中的操作實際上是輸入引數的副本(即,函式建立乙個與輸入引數值完全相同的臨時變數),並且對該副本的操作不會影響輸入引數的值。

    另一方面,通過引用傳遞可以理解為與輸入引數共享儲存區域的引用變數的副本。 因此,對函式中副本的修改等同於對輸入引數的修改。

    當輸入引數是抽象資料型別時,使用“按引用傳遞”可以避免在建立副本時呼叫建構函式(以及在函式返回時呼叫析構函式)。 因此,按引用傳遞比按值傳遞更有效。

    而且“通過引用返回函式值”有點棘手:

    “按手指返回”實際上也在函式中建立了乙個用於返回的臨時變數。

    1)如果返回值型別是內部型別,那麼編譯器通常會在函式返回時將返回值放在暫存器中,然後將其從暫存器中取出並分配給相應的變數。

    2) 如果返回值型別是抽象型別,則暫存器可能沒有足夠的空間來儲存返回值的資料。此時,編譯器會在將輸入引數按到堆疊後,在呼叫函式之前,將值的位址返回給堆疊。 當函式返回時,這會將資料直接寫入堆疊中返回值的位置。

    另一方面,“引用返回”對返回值有一定的限制:即返回值不能是區域性變數,必須能夠在函式範圍之外生存。

    例如,在以下三種情況下,第乙個是 false,後兩個是 true:

    int& f(int& a)

    int& f(int& a)

    int& f(int& a)

    也就是說,通過引用傳遞的返回值的儲存在函式之外,所以操作要簡單得多,編譯器在函式呼叫過程中一直在對返回值的位址進行操作,而當函式最後返回時,返回的實際上是函式外部儲存中返回值的值。

  3. 匿名使用者2024-02-08

    var a = 1;

    var b = a;複製 a 的值。

    b++;alert(a) a 的值仍為 1,並且不會更改以看到 ar a = [1];

    var b = a;它是對 b[0]+ 的引用

    alert(a); //"2"b 的修改也適用於 a,但當然 b = [2]; 這種修改對...

    引用和複製(值和位址)。

    傳遞值就是複製。

    原始值將被更改。

    不知道房東懂不懂?

  4. 匿名使用者2024-02-07

    在功能上類似,物件的值可以傳遞回音調函式。

    但實際上,這是有區別的。

    1 系統開銷不同。

    傳遞引用時,系統對傳遞的引數沒有任何額外的開銷,直接使用原始變數的記憶體空間。

    當你傳遞乙個位址時,你實際上是在傳遞乙個指標變數。 為了儲存此指標變數,在呼叫函式時會開啟乙個指標變數空間。

    2 不同的形式。

    傳遞 t 型別的物件值:

    a.傳遞引用時,函式引數需要寫成 t&a; 呼叫函式時,物件本身直接傳遞; 為函式賦值時,可以直接賦值。

    b.傳遞位址時,函式引數需要寫成 t*p; 呼叫函式時,需要傳入物件位址; 需要將值 *p 分配給賦值。

    從上面的比較可以看出,呼叫乙個引用比呼叫乙個位址更簡單、更有效。 之所以保留傳輸位址的呼叫,主要是為了C語言的相容性。 使用 C++ 程式設計時,應嘗試傳遞引用而不是位址。

  5. 匿名使用者2024-02-06

    有相似之處,但也有不同之處。

    因此,當函式內部修改引數的值時,修改後的結果可以返回給呼叫方。

    2)引用將始終指向乙個物件,並且指標可能為空,因此引用更安全。

  6. 匿名使用者2024-02-05

    form 引數是乙個引用,當使用實際引數呼叫時,它實際上是在傳遞實際引數的位址。

  7. 匿名使用者2024-02-04

    原理是一樣的,但語法不同。

  8. 匿名使用者2024-02-03

    C中沒有引用,只有C++。 在 C++ 中,引用是定義變數的別名,操作此別名是操作原始變數。

    例如,讓我們定義乙個引用:

    int a=10;定義乙個公共變數 int &ref=a; 定義對變數 a ref=20 的引用; 在這裡操縱 ref 實際上是在操縱 a。

    變數主要是在傳遞引數的時候非常有用的,當你的函式引數是值引數時,我們一般的做法是把指標傳進去,這就導致我們在函式中操作的都是指標,這其實是很不方便的,如果用乙個引用就可以很方便了。

    例如,定義乙個函式,其引數是引用。

    void func(int &b)

    呼叫。 int a=100;

    func(a);呼叫時,可以直接將引數傳遞到上述方法中,以達到與指標相同的效果,但更方便。

  9. 匿名使用者2024-02-02

    在C中,沒有一般的參考概念,這是C++的概念。

    在 C++ 的函式引數中,有兩種形式,其中:

    typevar,稱為引用方法;

    typevar,稱為傳遞。

    兩者之間的區別在於,當傳遞引用時,實際傳遞給函式的表單引數是對實際引數的引用,而不僅僅是傳遞給函式的值。 具體效能如下:

    傳遞引用時,引數和引數是相同的變數,即它們使用相同的記憶體空間並具有相同的位址。 傳輸值時,兩者的位址不同;

    傳遞引用時,沒有新變數,因此沒有類物件引數的構造和銷毀。 如果是值傳遞呼叫,呼叫時會構造,退出函式時會解構。

    由於引用使用的是原始引數的位址,因此引用引數值的修改會在退出函式被埋沒後反映在大鍵函式中,而傳遞值呼叫對引數的修改不會影響大鍵功能。

相關回答
22個回答2024-05-16

請注意:1 盡量避免感冒。

2 用罐杯用熱水燻鼻涕,以減少鼻塞和不適。 >>>More

6個回答2024-05-16

極光最常見於南北緯67°附近的兩個環形帶,稱為南極光帶和北極光帶。 北半球以阿拉斯加、加拿大北部、西伯利亞、格陵蘭島、冰島南端和挪威北海岸為主。 另一方面,南半球集中在南極洲附近。 值得一提的是: >>>More

15個回答2024-05-16

奧運會分為冬季和夏季。

夏季,顧名思義,一般在八月左右的夏季(北半球的夏季和南半球的冬季)舉行。 冬奧會當然在冬季舉行,通常在二月左右。 >>>More

20個回答2024-05-16

我和大家差不多,她漂亮又不漂亮有什麼用? 她很醜,但她很適合你,在適合放手去約會的時候不社交不是很可惜嗎? >>>More

12個回答2024-05-16

當我選擇另一半時,我只有三個要求:年齡相仿、外表不醜、勤奮、簡單。 後來的妻子符合要求,但現在她已經是乙個老婦人了。 >>>More