-
呵呵,正好我上學期學了C++
書中說:“C++中傳遞引數有三種方式:傳遞引數的值(稱為值傳遞,簡稱傳遞值),傳遞引數的位址(稱為位址傳遞,簡稱位址)和通過引用傳遞(簡稱傳遞引用),對應的函式呼叫也稱為值呼叫, 位址呼叫和引用呼叫。
定義函式時,參數列中的引數稱為形式引數或形式引數。 函式呼叫時參數列中的引數稱為實際引數,稱為實際引數。 實引數和表單引數之間的資料傳輸稱為表體-實體組合。
一般來說,C++語言是值呼叫,值呼叫是單向的,也就是說,乙個引數的值只能通過引數傳遞給表單引數,反之則不行。 換句話說,從被呼叫函式的角度來看,引數的值只能傳入,不能傳出。 引數可以是特定值、具有現有值的變數和可計算表示式,因為值和變數都是城市的一種表示式,因此,引數在傳遞值時本質上是表示式。
呼叫函式時,系統首先表示引數的球值,然後將該值傳遞給引數。
位址和參考的比較。 ”
我的手很酸......至於引文,建議大家看一下相關書籍,要知道引文是傳送的,首先要知道引文是什麼
-
表單引數:全名"形式引數"它是定義函式名稱和函式體時使用的引數,用於接收呼叫函式時傳遞的引數。
實際引數:全名"實際引數"它是在呼叫函式時傳遞函式的引數。
引數和引數的型別必須相同,或者必須符合隱式轉換規則,當引數和引數不是指標型別時,函式執行時引數和引數必須相同。
引數是不同的變數,它們位於記憶體中的不同位置,引數將是真實的。
釋放引數內容的副本,在函式末尾釋放引數,引數內容不變。
如果函式引數是指標型別變數,則為呼叫函式的過程。
,引數的位址被傳遞給函式,並且也在函式體內部使用。
引數的位址,即引數本身。 所以在函式體內部。
您可以更改引數的值。
舉個很簡單的例子:
intf(intb) *b 是表單引數*
returnb;}
main()
inta=1;
printf("%d",f(a));*a 是乙個真實的論點* 明白了嗎?
-
引數的型別和引數可以不同,但同時,它們可能會導致型別不匹配錯誤。
呼叫函式時,將引數的值傳遞給引數,系統首先將引數的值隱式轉換為引數的型別,然後將值賦值給引數。
引數和引數在數量、型別和順序上應嚴格一致,否則可能會出現型別不匹配錯誤。 變數或屬性型別不正確。 例如,除非整個字串可識別為整數,否則不能將具有整數值的變數分配給字串值。
盡可能在相容的資料型別之間分配值。 例如,可以將整數分配給 long,將 single 分配給 double。
-
表單引數和實數引數之間的差異。
引數出現在函式定義中,可以在整個函式中使用,但不能在函式外部使用。
引數出現在音調功能中,進入調製功能後無法使用引數。
表單和實際引數的功能是傳輸資料。 當呼叫函式時,調函式將實數引數的值傳遞給調製函式的形狀引數,從而將調函式的資料傳輸到調製函式。
1.引數變數僅在呼叫記憶體單元時分配記憶體單元,並且在呼叫結束時,分配的記憶體單元立即釋放。 因此,引數僅在函式內部有效。 函式呼叫完成後,鍵函式無法再使用。
2.引數可以是常量、變數、表示式、函式等,無論它們是什麼型別的量,在進行函式呼叫時都必須具有確定的值,以便將這些值傳遞給引數。 因此,應預先分配和輸入引數以獲得確定的值。
3.引數與引數在數量、型別、順序上應嚴格一致,否則會出現“型別不匹配”的錯誤。
4.函式呼叫中發生的資料傳輸是單向的。 也就是說,引數的值只能傳遞給引數,而引數的值不能反向傳遞給引數。 因此,在函式呼叫期間,引數的值會更改,但引數的值不會更改。
5.當引數和引數不是指標型別時,當函式執行時,引數和引數是不同的變數,它們位於記憶體中的不同位置,引數複製引數的內容,引數在函式末尾釋放,引數不更改。
但是,如果函式的引數是指標型別變數,則在呼叫函式的過程中,將引數的位址傳遞給函式,並且引數的位址也在函式體內部使用,即使用引數本身。 因此,在函式體內部,可以更改引數的值。
-
如果位址中引數的值發生了變化,則呼叫函式的引數也會發生變化,函式的引數引數不會發生變化。
綜上所述,只有 b 是位址,所以 b 在函式體中執行 b=2+1=3,所以輸出這個結果。
-
傳遞位址,即表單引數是引用或指標,以便可以更改傳遞的引數的值。 這就是區別。
-
沒有詳細的過程。
a) 不要通過定義函式內部和外部同名的變數來混淆自己,這對您的理解不利。
b) 對於 byref 引數,引入 b+1 引數應該是錯誤,錯誤行為下結果是不可預測的,應該是編譯器的bug
-
區別在於形式在函式中的位置,兩者的區別如下:
首先,主題不同。
1.引數:呼叫帶引數的函式時,函式名後括號內的引數為“實際引數”。
2.表單引數:非實際變數,又稱虛擬變數。
二是目的不同。
1.引數:它們可以是常量、變數或表示式,無論它們是什麼型別的引數,它們在呼叫函式時都必須具有確定的值,以便這些值可以傳遞給引數。
2.引數:定義函式名和函式體時使用的引數,其目的是接收呼叫函式時傳入的引數。
第三,特點不同。
1.引數:在呼叫函式的過程中,系統會將引數的值傳遞給被呼叫函式的格式引數。 換句話說,form 引數從實際引數中獲取值。 該值在函式呼叫的持續時間內有效,可以參與函式中的操作。
2. 表單引數:表單引數的本質是乙個名稱,不占用記憶體空間。
-
存在以下差異:1.主體不同:呼叫引數時,函式名稱後括號內的引數為“實際引數”。 引數不是實際變數,也稱為虛擬變數。
2.用途不同:引數可以是常量、變數或表示式,無論引數是什麼型別的量,在進行函式呼叫時都必須有確定的值,以便這些值可以傳遞到引數中。
需要注意的是,當引數和引數不是指標型別時,函式執行時,引數和引數是不同的變數,它們位於記憶體中的不同位置,引數會複製引數的內容,引數在函式末尾釋放, 而引數不會改變。
-
例如,f(x) = 2x + 10f(x) 是返回值,x 是形式引數,當您為 x 賦值 5 時,引數為 5,當賦值為 10 時,引數為 10
因此,一般來說,真正的論點是,在呼叫函式時,基本上只有一種方法可以將引數傳遞給表單引數,即傳遞值。
定址和引用都是價值的概念轉換,例如
void calc(int * ptr);
呼叫時,它表面上是乙個位址,但對於 ptr 引數,它的值被初始化為實數引數,因此它是傳遞。
理解這一點的最基本方法是,從記憶體的角度來看,給變數賦值無非是在記憶體中的某個地方寫入乙個值,所以你需要注意目標記憶體是否被更改。 例如,當你把乙個值寫到指標引數指向的記憶體時,你寫的就是引數指向的記憶體,這就是定址的本質。
-
下面是乙個簡單的示例:
int func(int a, int b),其中 a 和 b 是形式引數,a 和 b 的值是未知的。
呼叫時,例如: fun(5,6),其中 a = 5 , b = 6 ,其中 5 和 6 是函式 func 的實引數,表示實值,而不是由名稱引用,則該函式將變為:
fun(5,6)
在函式中,a 的值被替換為 5,b 的值被替換為 6。
由於它是乙個形式引數,因此 a 的值可以是任意整數值,b 的值也可以是任意整數值(這裡不考慮一些數值邊界)。 所以你寫了乙個func函式,你可以將::應用於所有二項式加法
5+6 func(5,6)
11+22 func(11,22)
13 + 43 func (-13,43) 這樣說,你應該能夠大致理解實引數和形式引數的區別。
至於引數傳遞的方式,在C++中,一般分為改變引數值的轉移(指標、引用)和不改變引數值的轉移(傳遞值)。
圖書館的積分分為兩部分:經驗值和財富值。 經驗值是根據你在庫中的行動獲得的,同時,經驗值決定了你在庫中的等級,隨著經驗值的增加,你也會進步並獲得更高的頭銜。 財富是通過您對圖書館的高質量貢獻而獲得的,目前圖書館的財富可用於圖書館**文件。 >>>More
總結。 相關資訊:電腦藍芽可以連線手機,如果是台式機,就需要有藍芽介面卡; 如果是膝上型電腦,現在的都有藍芽裝置; 電腦藍芽連線手機的操作如下: >>>More