C 中,當形參是指標,實參是什麼

2023-07-10 18:44:33 字數 5598 閱讀 7383

1樓:孔桂枝和亥

你這第一個和第二個有什麼不一樣的麼,就是把temp換成了p。

第一個和第二個都不會有變化,第三個會交換。

要理解指標和指標變數的含義,我們平時說的指標,一般指的就是指標變數。指標變數也是變數,它的值也會變化。指標變數儲存的是一個記憶體地址。

函式呼叫的過程中,先要把實參複製給形參,如果引數是指標型別,那麼就是把指標變數複製了過去,所以實參和形參是兩個不同的指標變數,只不過是儲存的記憶體地址是一樣的。可以拿int型別來類比。相當於:

inta,b;a

ba;這裡a和b是兩個不同的變數,同樣實參的指標變數和形參的指標變數也是兩個不同的變數,修改a並不會影響b。所以第二個裡面p=p1;

p1=p2;

p2=p1;修改的是形參的指標變數,執行完之後,實參的指標變數並沒有改變指向的內容。而第三個裡面就不一樣了,它修改的不是指標,而是指向的記憶體,實參和形參指向的記憶體是同樣的,所以實參指標變數指向的內容被修改了。

所以,理解了指標的原理和函式呼叫的原理就能明白這個問題了,不能簡單地認為只要傳遞指標就能改變實參。

2樓:顧懷雨龍君

形參是指標的,實參是陣列,變數的地址,指標(可以是子類的指標)

實參是指標的,形蠶是引用,陣列,指標(可以是父類的指標)

c++中,實參和形參有什麼區別?

3樓:無法無天

實參和形參被分配的地址不同。可以這樣比喻,實參是一間別墅,而形參是另一間別墅。實參裡的東西被複制了一份搬到了形參裡面,而形參這件別墅裡面的東西被扔了或者新增了新的東西是不會對實參這件別墅造成影響的。

如果不用指標或者引用,實參只能向形參裡面傳遞東西(值),就好比上面的舉例,實參的東西能拷貝一份搬到形參裡面,而形參裡面的東西(值)被改變卻不會反向傳遞,就是形參裡面的東西不會覆蓋實參的東西(值)。

簡單地說就是實參和形參操作的地址不同,如果需要得到改變的值,一般都是用return返回值,如果要改變實參都會使用指標或者引用來實現,這樣操縱地址使得實參操縱起來更加的方便。

形參的作用域僅限於定義的函式內,一旦出了這個函式,定義的形參就會被釋放掉。

4樓:匿名使用者

形參就是函式定義時候給引數隨便起的一個名字,只是為了和其它變數區別的形式上的名字。

實參就是呼叫函式時,實際傳給函式的引數,傳了什麼就是什麼。

5樓:賴福平

例如:int func(int a,int b)

int main()

其中a,b就是形式引數,x,y就是實際引數。形式引數是在函式實現的時候用到,而實際引數是在呼叫函式時把值傳遞給形式引數然後執行函式。

6樓:匿名使用者

int fun(int n)

int main()

這個例子裡面n是形參,他不是主函式中具體存在的引數。

i是實參,他在主函式中被定義,也就是在記憶體中有這個實際的個體,而在fun函式中,以n的形式被傳入。

區分起來很簡單,形參在自定義的函式中被定義,如n。而實參是在呼叫函式的時候需要被傳入的引數,如i。

7樓:

加點兒分吧,這樣大家都會關注的!

你的提問也會被排到前面!

c語言中形參和實參的區別是什麼?

8樓:匿名使用者

形式引數和實際引數。

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

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

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

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。可見實參的值不隨形參的變化而變化。

9樓:匿名使用者

高階語言在設計程式模組時,模組名定義後,緊跟其後所定義的引數(括弧內)被稱為形參(也稱虛參)。當該模組被呼叫時,在主調模組中,出現在被呼叫的模組名後的引數被稱為實參。實參代替虛參的過程被稱為虛、實結合,也稱換參。

多數高階語言的換參是由編譯系統來完成,比如c語言和fortran語言亦是如此。basic語言的換參則是由程式設計人員來完成的。如果只允許實參向虛參傳遞,則被稱為「單向傳遞」,c語言的變數類虛、實結合即是「單向傳遞」。

如果同時允許虛參向實參傳遞,這種傳遞被稱為「雙向傳遞」,fortran 語言定義的子程式即是如此。

10樓:匿名使用者

1、形參 form parameter實參 real parameter

出現在函式定義中的引數,就叫形參。

出現在函式呼叫中的引數,就叫實參。

2、例如:函式定義:

int max( int a , int b ) 這裡的a,b就是形參。

函式呼叫。int main()

11樓:匿名使用者

傳形參改變的是函式內的值,傳實參是同時改變函式外的值。

12樓:早早瓦

形參:就是抽象的。

實參:就是具體的。

13樓:匿名使用者

四樓說的全是複製的吧,一個字都不少啊。

14樓:匿名使用者

在c中由於函式的呼叫就伴隨著介面的問題。

一個函式就是用來實現一個功能的,如:#include

int add(int a,int b)//把兩個數相加int main()

它相當於一個處理資料的機器,而資料就是原材料,這就需要一個材料的輸入口,就是函式設計的介面,在這個過程中我們首先定義了一個函式add(int a,int b)(製造了一臺機器),在定義這個函式的時候由於我們只是賦予它這個使兩個數相加的功能,但是定不知道它將把那兩個數相加,所以就先給它設定是對a,b相加,(就像我們只是造了機器,知道它的作用而沒有原料)這時的a,b就是形參,即它只是一個形式上的資料,是定義在函式中的。

而實參就是在呼叫函式的時候要向形參傳遞值,如num1,num2,(它就是機器要開工時需要的原料,有了它機器才能進行加工),我們實際上是要吧num1,num2相加,只是在主函式里寫**太繁雜,就把**寫到函式里邊。這時形參a,b被賦予了num1,num2的值後就可以代替num1,num2在add函式體中完成本想對num1,num2進行的操作(至於為什麼要用實參形參還涉及到資料的作用域的問題)

c語言中什麼是形參,什麼是實參?

15樓:惠企百科

形參:全稱為「形式引數」是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳遞的引數。

形參的作用是實現主調函式與被調函式之間的聯絡,通常將函式所處理的資料,影響函式功能的因素或者函式處理的結果作為形參。

實參:全稱為"實際引數"是在呼叫時傳遞給函式的引數,即傳遞給被呼叫函式的值。

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

c++中,實參和形參有什麼區別?

16樓:

加點兒分吧,這樣大家都會關注的!

你的提問也會被排到前面!

c++中形參和實參到底有什麼區別?

17樓:匿名使用者

有以下區別:1、主體不同:實參在呼叫有參函式時,函式名後面括號中的引數為「實際引數」。形參不是實際存在變數,又稱虛擬變數。

2、目的不同:實參可以是常量、變數或表示式,無論實參是何種型別的量,在進行函式呼叫時,都必須具有確定的值,以便把這些值傳送給形參。

需要注意當形參和實參不是指標型別時,在該函式執行時,形參和實參是不同的變數,他們在記憶體中位於不同的位置,形參將實參的內容複製一份,在該函式執行結束的時候形參被釋放,而實參內容不會改變。

18樓:熊楚佘樂悅

形參。:可以認為函式內部的。

區域性變數。實參。

實際引數。值,即從外部傳遞給函式時實際的值。這個值就是形參在函式中的直接表現。

在c++中,什麼是形參,什麼是實參。有何區別嗎

19樓:匿名使用者

每次呼叫函式時,來都源會重新建立該函式所bai有的形參,此時所傳du遞的實參將zhi會初始化對應的形dao

參。形參的初始化與變數的初始化一樣:如果形參具有非引用型別,則複製實參的值;如果形參為引用型別,則它只是實參的別名。

具體關於函式的定義,非引用形參及引用形參的區別,請參見《c++ primer》

20樓:不期而然

簡單的說,形參、實參是用來完成函用數調中的資料傳送。

函式定義用的是形參。

主函式呼叫函式時用的實參,它把實參的值傳送給形參。

21樓:匿名使用者

一樓說了很多了,而且書上這種內容頁介紹很多,看看吧,還有就是自己去寫子函式看看,在子函式里的引數跟主函式定義的引數有什麼不一樣。

指標變數能只能作為函式的形參不可以作函式的實參對還是錯

22樓:111111前的

錯,指標變數既可以作為函式的形參,也可以作函式的實參。

當陣列名作函式的引數時,傳遞到是陣列的起始地址,形參是用來接受從實參傳遞過來的實引數組的地址的。因此,形參應該是一個地址變數(只有指標才能存放地址)。

陣列名就是陣列的首地址,實參向形參傳遞陣列名實際上就是傳送陣列的地址,形參得到該地址後也指向同一陣列。這就好像同一件物品有兩個彼此不同的名稱一樣。同樣,指標變數的值也是地址,陣列指標變數的值即為陣列的首地址,當然也可以作為函式的引數使用。

指標作為實參,指標作為形參:

在C語言中,定義函式的形參和實參之間具體是如何進行引數傳

函式中的形參和呼叫時的實參都是陣列名時,傳遞方式為 地址傳遞 此時形參和實參共用同一段記憶體 都是變數時,傳遞方式為 值傳遞 實參與形參互不影響 主要有兩種 1 值傳遞 在函式呼叫時,將實參的值複製一份傳遞到呼叫函式中,這樣,如果在呼叫函式中修改了引數的值,也不會影響到實參的值。2 引用傳遞 與 1...

求大俠指教!c語言中的實參 形參是指什麼的啊有例項麼

比如這個簡單的例子。void main int sum int x,int y 這裡的x和y就是形參。沒有值傳入時,只是個形式表達。c語言中的入口引數是什麼意思啊?過了,表示不懂?有什麼例項嗎?你能提供一下你這個 入口引數 所在的文章片斷嗎?這樣方便有針對性的說明。我的理解應該就是函式的的輸入引數吧...

請問什麼是形參 什麼是實參?最好能舉個例子。謝謝

int fun int x main x是形參,a是實參 在函式定義的時候所帶的引數是形參 在呼叫函式多使用的引數時實參 形參因為它只是一個形式,並不分配記憶體,所以叫形參 而在呼叫函式是使用的引數是實參,要分配記憶體 當讓你的形參和實參可以同名 例如上邊可以寫作 int fun int x mai...