1樓:匿名使用者
舉個簡單例子來說明:
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++裡總的來分的話就是分為改變實參值的傳遞(指標、引用)和不改變實參值的傳遞(傳值)
2樓:匿名使用者
用數學中的函式對比,如f(x) = 2x + 10f(x)是返回值,x是形參,當你給x賦值為5時,實參是5,當賦值為10時,實參是10
因此,概括的說實參是某次函式呼叫時給形參的賦值引數傳遞方式本質上只有一種,即傳值。
傳址與傳引用都是傳值的概念轉換,比如
void calc(int * ptr);
在呼叫時,表面上是傳址,但對ptr這個形參來說,它的值初始化為了實參,因此是傳值。
最本質的理解方法是,從記憶體的角度,給某個變數賦值無外乎在某個地方記憶體中寫值,因此你需要關注目標記憶體是否被改變。比如,給指標形參指向的記憶體寫值時,寫的就是實參指向的記憶體,這就是傳址的本質。
函式的引數傳遞指的是什麼?有哪幾種傳遞方式?
3樓:假的司馬
函式的引數傳遞:當進行函式呼叫的時候,要填入與函式形式引數個數相同的實際引數,在程式執行的過程中,實參會將引數值傳遞給形參,這就是函式的引數傳遞。
函式引數傳遞有以下三種:
一. 值傳遞
1. 用值傳遞方式,實際上是把實參的內容複製到形參中,實參和形參是存放在兩個不同的記憶體空間中。在函式體內對形參的一切修改對實參都沒有影響;
2. 如果形參是類的物件,利用值傳遞的話每次都要呼叫類的建構函式構造物件,效率比較低。
二. 指標傳遞(地址傳遞)
1. 當進行指標傳遞的時候,形參是指標變數,實參是一個變數的地址或者是指標變數,呼叫函式的時候,形參指向實參的地址;
2. 指標傳遞中,函式體內可以通過形參指標改變實參地址空間的內容。
三. 傳遞引用
1.引用實際上是某一個變數的別名,和這個變數具有相同的記憶體空間;
2. 實參把變數傳遞給形參引用,相當於形參是實參變數的別名,對形參的修改都是直接修改實參;
3. 在類的成員函式中經常用到類的引用物件作為形參,大大的提高**的效率。
在c語言中,函式實參與形參之間的資料傳遞方式是( )傳遞方式。
4樓:八零後電影院
函式實參與形參之間的資料傳遞方式是( 值傳遞)傳遞方式,在c語言中,資料傳遞方式有值傳遞和引用傳遞,值傳遞:傳值,實際是把實參的值賦值給行參,相當於copy。
傳值呼叫中,只使用了實參的值。傳值呼叫機制裡,形參是一個區域性變數,其初始值為相應實參的值。在引用呼叫機制裡,將實參的地址傳遞給形參,從表面上看是以實參變數取代形參,因此任何發生在形參上的改變實際上都發生在實參變數上。
引用傳遞是將變數的記憶體地址傳遞給方法,方法操作變數時會找到儲存在該地址的變數,對其進行操作。會對原變數造成影響。可以將一個變數通過引用傳遞給函式,這樣該函式就可以修改其引數的值。
5樓:春雨_潤物
值傳遞。
實參與形引數據傳遞有兩種方式:值傳遞與地址傳遞。
地址傳遞的形式為 int &a=b;
也就是我們所說的引用,但引用只有c++中有,所以c語言都是值傳遞的。
有些人有誤解:認為c語言的int *p=&a;不也是按地址傳遞嗎?其實不是這樣的。
深入理解值傳遞與地址傳遞就會發現:
值傳遞是:把實參的值傳給一個變數(形參)。所以int *p=&a也是把a的地址值傳給了指標變數p
地址傳遞是:直接把地址傳進來,沒有賦給任何變數,這樣在函式體內對形參的操作也就是對實參地操作。有這種功能的也就是引用(&)了。
6樓:影碟思
實參拷貝一份給形參 形參如果是指標 則把實參地址賦給形參
形參和實參的區別是什麼
7樓:淳于長順印黛
實參是用來填充形參的。當函式被呼叫時,形參列在函式名後面的括號裡。執行函式呼叫時,實參被傳遞給形參。
1、形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。
2、實參可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使引數獲得確定值。
3、實參和形參在數量上,型別上、順序上應嚴格一致,否則就會發生型別不匹配的錯誤。
4、在一般傳值呼叫的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函式呼叫過程中,形參值發生改變,而實參中的值不會變化。而在引用呼叫的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。
例如:當你進行函式呼叫的時候,add(1,
2),這裡的1和2就是實參。
擴充套件資料:
形參和實參的特點:
1、形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。
2、實參可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參。
3、實參和形參在數量上,型別上、順序上應嚴格一致,否則就會發生型別不匹配的錯誤。
4、在一般傳值呼叫的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參
參考資料:
搜狗百科-形參
搜狗百科-實參
8樓:
形參 是定義方法、函式時使用的,形參定義了引數的型別,和在方法內部是如何使用的。
實參 是使用方法、函式時傳入給方法、函式的引數。
VB形參,實參問題,vb中形參和實參的區別
這個不是什麼形參和實參的區別。是引數傳遞型別的問題。你的fun函式中,兩個形參x,y都是傳址傳遞變數。那麼fun a,a 這裡的a就是實參,這裡a傳遞給兩個傳址傳遞引數x和y,那麼x和y都會直接訪問並修改a的記憶體地址的數值。這個就是傳址傳遞引數的最大作用。那麼a記憶體地址的值改變了,a也就改變了。...
形參和實參的區別是什麼,c語言中形參和實參是什麼意思?有什麼區別?
淳于長順印黛 實參是用來填充形參的。當函式被呼叫時,形參列在函式名後面的括號裡。執行函式呼叫時,實參被傳遞給形參。1 形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。2 實參可以是常量 ...
C語言中形參與實參怎麼傳遞,c語言中形參和實參的區別?
我簡單描述一下 c語言傳遞引數機構是這樣的 非指標類的資料傳遞引數時傳數值,指標類資料傳遞引數時傳地址 這裡陣列名也算指標 比如int max int a,int b 這時候如果呼叫這個函式max x1,x2 僅僅將x1和x2的數值傳遞給函式max,a與x1佔有不同的記憶體區域 int max in...