當前位置:首頁 » 編程語言 » c語言實參數量可以多於形參數量
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言實參數量可以多於形參數量

發布時間: 2022-04-13 19:23:30

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

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

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

實參:全稱為"實際參數"是在調用時傳遞給函數的參數,即傳遞給被調用函數的值。

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

(1)c語言實參數量可以多於形參數量擴展閱讀:

形參和實參的特點:

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

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

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

4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。

參考資料來源:網路-形參

參考資料來源:網路-實參

㈡ 在c語言中實參數可以與形參個數不一致 對嗎

不對!形參的個數要和實參的個數一致,否則就會出錯!實參通過「值傳遞」傳給形參,如果他們的個數不一致,可想而知,肯定是不對的!

㈢ c語言中實參和形參的數目可以不同嗎

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

㈣ C++中,為什麼形參和實參個數要相同形參不能被反復被調用嗎

你這樣理解是錯誤的,教材上是指調用函數時傳遞的參數數目應該相同!當你多次調用函數也是分開多次把實參傳遞給函數的,所以書上寫的也是對的!
但是形參也不一定和實參個數是相同的,例如在C++可以這樣定義函數
int max(int x,int y=1)
{int z;
z=x>y?x:y;
return(z);
}
可以這樣調用函數
max(2);或者max(2,3);
認真看書,提出疑問是對的!多累積,C++編程可以成為一門藝術!當你理解了這句話的時候就能成為高手了!

㈤ c語言中什麼時候實參和形參應該不一樣

你的問題的意思不明確啊。簡單為你說下吧。
形參是定義函數時的參數,目的是用來接收調用函數時的實參值。實參是調用函數時的參數,為函數對應的形參提供明確的數值或地址。函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。
形參和實參可以相同也可以不相同,但實參和形參在數量上,類型上,順序上應嚴格一致。
例如:
int
process(int
a
,double
b)
//a,b為形參,沒有具體數值
{
b=a*2;
return
b;
}
int
main()
{
int
a=1
;
double
b;
process(a,b);
//a,b為實參,a具體的值由main()中定義初始化的a對應傳入,b由process的函數體計算可得。
printf("%f",b);
}
形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。

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

形式參數和實際參數
函數的參數分為形參和實參兩種。在本小節中,進一步介紹形參、實參的特點和兩者的關系。形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。實參出現在主調函數中,進入被調函數後,實參變數也不能使用。形參和實參的功能是作數據傳送。發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。
函數的形參和實參具有以下特點:
1. 形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。
2. 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3. 實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。
4. 函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。

【例】可以說明這個問題。

main()
{
intn;
printf("inputnumber ");
scanf("%d",&n);
s(n);
printf("n=%d ",n);
}
ints(intn)
{
inti;
for(i=n-1;i>=1;i--)
n=n+i;
printf("n=%d ",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語言中實參與形參的區別

  1. 形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。實參出現在主調函數中,進入被調函數後,實參變數不能使用。

  2. 形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。而實參在主調函數中已分配內存單元。

  3. 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,都必須具有確定的值,以便把這些值傳送給形參。

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

  5. 函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。

㈧ c語言中,如果實參個數少於形參個數,符合語法規范嗎,他的實數是怎麼傳遞到形參的,

c++中允許使用默認參數和函數重載,來實現相同函數名接收不同個數和類型的參數。
c語言中有可變參數,但是需要你在函數實現中實現可變參數,比如printf函數就是通過可變參數實現,可以接受個數可變的參數。
如果限制在c語言而不考慮c++的情況,那麼要實現你所說的功能就必須用可變參數,關於可變參數,可以看看。

㈨ c語言中,當實參的個數比形參多時,實參應選哪個

21

r=func((x--,y++,x+y),z--);中(x--,y++,x+y)是一個逗號表達式,值為最後一個表達式的值。這里x--後x=5,y++後y=8,所以(x--,y++,x+y)的值就是x+y,等於5+8=13。
所以r=func((x--,y++,x+y),z--);即為r=func(13,z--);
而z--是先運算後,z才減1,所以r=13+8=21

㈩ c語言 形參 實參 詳解 謝謝

形式參數和實際參數
函數的參數分為形參和實參兩種。在本小節中,進一步介紹形參、實參的特點和兩者的關系。形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。實參出現在主調函數中,進入被調函數後,實參變數也不能使用。形參和實參的功能是作數據傳送。發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。
函數的形參和實參具有以下特點:
1.
形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。
2.
實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3.
實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。
4.
函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。
因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。
【例】可以說明這個問題。
main()
{
int
n;
printf("input
number\n");
scanf("%d",&n);
s(n);
printf("n=%d\n",n);
}
int
s(int
n)
{
int
i;
for(i=n-1;i>=1;i--)
n=n+i;
printf("n=%d\n",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。可見實參的值不隨形參的變化而變化。/*---------------------------------------------------------------------------------*/