值傳遞 位址傳遞

2021-06-16 13:57:58 字數 445 閱讀 8373

在呼叫乙個有引數的過程時,首先進行的是形式引數與實在引數的結合,實現呼叫過程的實在引數與被呼叫過程的形式引數之間的資料傳遞。資料傳遞方式有兩種方式:按值傳遞與按位址傳遞。

1. 按值傳遞引數

按值傳遞引數時,是將實在引數的值複製乙個形式引數中,如果在呼叫過程中改變了形式引數的值,不會影響實在引數本身,即實在引數保持呼叫前的值不變。

按值傳遞引數方法是在形式引數前加上byval,如:sub s1(byval a as integer,byval b as integer) ;另外一些特別情況也是按值傳遞引數,如實在引數是常數、表示式時; 對於實在引數是變數時,只要在其左右加上圓括號,如  call sub1((x),(y))。

2.按位址傳遞引數

按位址傳遞引數時,把實在引數的位址傳送給被呼叫過程,形式引數和實在引數共用記憶體的同一位址。在被呼叫過程中,形式引數的值一旦改變,相應實參的值也跟著改變。

值傳遞 位址傳遞 引用傳遞

值傳遞使得實參與形參沒有聯絡,函式與函式之間沒有耦合性,在各自的函式裡修改值不會改變各自本身的值。但這也是它的缺陷。1.實參傳入被調函式無法交換數值。2.當傳入值大於8位元組即需要進行整體拷貝,無論是開闢的空間還是資料的拷貝都相對較大 這也是設計陣列退化為指標的原因 而指標傳遞只有4個位元組 所以需...

c 值傳遞 位址傳遞 引用傳遞

一.函式引數傳遞方式之一 值傳遞 1 值傳遞的乙個錯誤認識 先看題一中exchg1函式的定義 void exchg1 int x,int y 定義中的x,y變數被稱為exchg1函式的形式引數 問 你認為這個函式是在做什麼呀?答 好像是對引數x,y的值對調吧?請往下看,我想利用這個函式來完成對a,b...

C 值傳遞 位址傳遞 引用傳遞

昨天遇到乙個問題 程式一 char str 256 char sp str visitdepart rs,rs.column,sp static void visitdepart result t rs,int num,char spx note 這個程式表面上看是沒有錯誤的,但是,我用它做了樹的深...