求C高手教一下友元函式的引數是怎麼回事

2021-03-10 20:56:21 字數 2426 閱讀 4723

1樓:匿名使用者

這個問題主要是關於形參和實參與傳值和傳址。帶有e68a8462616964757a686964616f31333264653465&表示傳址,表示直接將實參的位址傳給函式,而沒有&表示傳值。

順便說下&說是引用也沒錯,引用其實就是一種比較安全的傳址過程,和*指標傳址還是有一定區別的。

形式引數和實際引數

函式的引數分為形參和實參兩種。在本小節中,進一步介紹形參、實參的特點和兩者的關係。形參出現在函式定義中,在整個函式體內都可以使用,離開該函式則不能使用。

實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作資料傳送。發生函式呼叫時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。

函式的形參和實參具有以下特點:

1. 形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只有在函式內部有效。函式呼叫結束返回主調函式後則不能再使用該形參變數。

2. 實參可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。

3. 實參和形參在數量上,型別上,順序上應嚴格一致,否則會發生型別不匹配」的錯誤。

4. 函式呼叫中發生的資料傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。

【例】可以說明這個問題。

main()

int s(int n)

本程式中定義了乙個函式s,該函式的功能是求∑ni的值。在主函式中輸入n值,並作為實參,在呼叫時傳送給s 函式的形參量n( 注意,本例的形參變數和實參變數的識別符號都為n,但這是兩個不同的量,各自的作用域不同)。在主函式中用printf 語句輸出一次n值,這個n值是實參n的值。

在函式s中也用printf 語句輸出了一次n值,這個n值是形參最後取得的n值0。從運**況看,輸入n值為100。即實參n的值為100。

把此值傳給函式s時,形參n的初值也為100,在執行函式過程中,形參n的值變為5050。返回主函式之後,輸出實參n的值仍為100。可見實參的值不隨形參的變化而變化

至於傳值和傳址就是:

傳值,若在函式中改變了該值,原值不變,因為傳進來的是個副本;

傳址,若在函式中改變了該值,則原值也變,因為傳進來的是位址,則在函式中的操作相當於直接操作該值

至於為什麼要用傳址,是因為若是實參的資料量過大,還要經過拷貝傳給函式,影響效率。

所以一般內建型別最好選擇傳值,而自定型別最好是傳址。

呵呵,一部分粘的(有現成的不用太二了),一部分自己打的,希望這位童鞋能看的懂吧。

2樓:匿名使用者

帶有&的形參表

bai示傳du引用。這是c++的乙個基礎zhi知識點。是不dao是傳引用與是專

不是友元函式無關,重點屬是避免傳值帶來的一些缺陷。

引用的主要用處:

1. 高效的傳遞引數,避免了傳值方式中的拷貝構造,引用傳遞實際上是傳位址

2. 可以修改引數,以返回結果

不知這麼說你能否理解,有問題可追問

c++中,為什麼友元函式訪問不了private成員?

3樓:匿名使用者

a,b類的定義順序需要交換一下,另外,a類中的friend void display(a &t);

需要改為

friend void b::display(a &t);

整個**版

改正這樣權試試:

#include

using namespace std;

class a;

class b

;class a

};b::b()

4樓:匿名使用者

#include

using namespace std;

class a;//change

class b

;class a

};b::b()

5樓:匿名使用者

友元復函式 :

友元函式制是可以直接訪問類的私有成bai員的非成du員函式zhi。它是定義在dao類外的普通函式,它不屬於任何類,但需要在類的定義中加以宣告,宣告時只需在友元的名稱前加上關鍵字friend,其格式如下:

friend 型別 函式名(形式引數);

友元函式的宣告可以放在類的私有部分,也可以放在公有部分,它們是沒有區別的,都說明是該類的乙個友元函式。

乙個函式可以是多個類的友元函式,只需要在各個類中分別宣告。

友元函式的呼叫與一般函式的呼叫方式和原理一致。

求會線性代數的大佬教一下

幫你做了一。我也不會做。看來學的數學知識已經還給老師。你的反應是 這還用問,數學當然是客觀的自然規律了 我一點兒都不覺得奇怪,我自己也曾這樣認為。從中學的初等數學和初等物理 一路走來,很少人去懷疑一門數學學科是不是自然規律,當我學習微積分 概率統計時也從來沒有懷疑過,唯獨線性代數讓我產生了懷疑,因為...

求高手幫忙鑑定一下這塊碧玉,買的是4982,本來我就不是愛玉

廣義和田玉,加拿大碧玉,市價在500元附近!廣義和田玉,您要是外行不建議您 有什麼 收藏古玩木頭花鳥魚蟲的 你要學習養蠱嗎胸颱?瞳?上海最大的花鳥魚蟲市場具體位置在 急急急急 上海浦東寶豐花鳥市場 嵐皋路上的嵐靈花鳥市場。比較大 求助各位,天津有沒有花鳥魚蟲市場賣貝殼的?就是活的那種,要淡水的,放魚...

求高手幫我看一下我的星盤

我勸你最好不要算五行,面相,八字和紫微星座命盤什麼的。我家有好多內老書,豎版字那種。我看過容些,上面很明確說 洩露天機的人,易遭天譴 網上這些人基本上是胡言亂語 在免費 上四處抄襲罷了,誤人誤己啊!我也聽太爺告訴我。人的五行八字不可以算。因為 命 越算越薄也就是說 批八字 是非常壓 星運 的 你自己...