C語言中形參與實參怎麼傳遞,c語言中形參和實參的區別?

時間 2021-09-05 11:59:54

1樓:

我簡單描述一下~c語言傳遞引數機構是這樣的~非指標類的資料傳遞引數時傳數值,指標類資料傳遞引數時傳地址

(這裡陣列名也算指標)

比如int max(int a,int b);

這時候如果呼叫這個函式max(x1,x2);僅僅將x1和x2的數值傳遞給函式max,a與x1佔有不同的記憶體區域

int max(int *a,int *b);

這時候如果呼叫這個函式max(&x1,&x2);則將x1、x2的地址傳遞給a、b,a指向x1的地址,也就是說a可以操控x1的數值。

如果想具體瞭解可以參看譚浩強教授寫的~c語言程式設計~很好很強大~

2樓:匿名使用者

void main()

void fun(int a,int b); 函式定義

3樓:匿名使用者

相關資料

4樓:匿名使用者

void swap(int a, int b);//形參

void swap(int& a, int& b);//實參

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

5樓:皮囊之下

函式的形參和實參區別如下:

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

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

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

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

實參(argument):

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

形參(parameter):

全稱為"形式引數" 由於它不是實際存在變數,所以又稱虛擬變數。是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳入的引數.在呼叫函式時,實參將賦值給形參。

因而,必須注意實參的個數,型別應與形參一一對應,並且實參必須要有確定的值。

形式引數:形參是函式被呼叫時用於接收實參值的變數。

根據實際需要可有可無。沒有形參時,圓括號也不可省;多個引數之間應用逗號分隔。引數包括引數名和引數型別。

6樓:匿名使用者

在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進行的操作(至於為什麼要用實參形參還涉及到資料的作用域的問題)

7樓:獨日律勇

形參必須是變數,實參可以使常量變數表示式。形參可以有預設值,對於有預設值的形參呼叫函式是可以不寫實參,函式按照形參的預設值計算。其實形參和實參在程式設計時最大的區別是形參是函式內部用的,而實參是傳給函式是用的,或者說呼叫函式時用的。

8樓:

如int func(int a) // a即func形參,寫函式**時,給傳給這個函式的引數取的名字

int main()

9樓:匿名使用者

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

10樓:匿名使用者

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

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

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

11樓:匿名使用者

1、形參 form parameter實參 real parameter

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

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

2、例如:

函式定義:

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

函式呼叫

int main()

12樓:匿名使用者

形參就是函式定義裡的各種運算引數。例如:

int fun(int a,double c);

a,c就是形參。

實參是形參被具體賦值之後的值,參加實際的運算,有實際作用。

13樓:早早瓦

形參:就是抽象的

實參:就是具體的

14樓:匿名使用者

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

15樓:匿名使用者

形式引數和實際引數

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

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

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

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

c 中形參與實參的區別最好能詳細點

include int fun int a,int b 形參a bvoid main 在這個程式中,x y兩個引數是實參,在呼叫處的引數是實參 a b兩個引數是形參,在函式定義處的引數是形參。形參a b只有在fun 函式被呼叫時才有記憶體,函式呼叫結束記憶體馬上釋放!實參x y的在它的整個作用域內有...

c語言中形參和實參是什麼意思?有什麼區別

舜茵戰韶容 引數傳遞主要用於模組化程式設計中。如果不瞭解引數傳遞是無法編寫出正確的呼叫函式的。形參就是形式引數,用一個變數代表大家。實參就是實際引數,用一個 確切的數值代替形式引數,可以是表示式。實際引數與形式引數的引數個數 型別和順序都應一樣,如果不一樣的話,系統會強制轉換,這樣會造成資料的丟失。...

c語言中如何將結果傳遞給另c語言檔案

拒絕996的瀟灑程式設計師 通過函式的傳址引數 引用或指標 或返回值傳遞。多個人合作時,必須提前約定好介面函式的宣告格式。這裡的所謂介面函式就是所有可能需要用來互相傳遞結果的函式 這個要用 版本管理工具,有商用的也有開源的。開源的比如svn,cvs,商用的如clearcase等。工作的模式基本上是 ...