形參

形參

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

形參的作用是實現主調函式與被調函式之間的聯繫,通常將函式所處理的數據,影響函式功能的因素或者函式處理的結果作為形參。沒有形參的函式在形參表的位置應該寫int main(void) 函式也可以有形參和返回值,其形參也稱為命令行參數,由作業系統在啟動程式時初始化,其返回值傳遞給作業系統。

基本介紹

  • 中文名:形參
  • 外文名:formal parameter
  • 全稱形式參數
  • 定義函式名和函式體的時候使用的參數
  • 目的:用來接收調用該函式時傳遞的參數
概述,形參和實參的關係,形參和實參的特點,形參和實參的對照實例(C語言版),形參改變實參的實例(C#語言版),

概述

全稱為“形式參數”是在定義函式名和函式體的時候使用的參數,目的是用來接收調用該函式時傳遞的參數。
形參的作用是實現主調函式與被調函式之間的聯繫,通常將函式所處理的數據,影響函式功能的因素或者函式處理的結果作為形參。沒有形參的函式在形參表的位置應該寫void.main 函式也可以有形參和返回值,其形參也稱為命令行參數,由作業系統在啟動程式時初始化,其返回值傳遞給作業系統。

形參和實參的關係

形參和實參的特點

1、形參變數只有在被調用時才分配記憶體單元,在調用結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式調用結束返回主調用函式後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函式等,無論實參是何種類型的量,在進行函式調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。
4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函式調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。

形參和實參的對照實例(C語言版)

int 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 值。從運行情況看,輸入n 值為100。即實參n 的值為100。把此值傳給函式s 時,形參n 的初值也為100,在執行函式過程中,形參n的值變為5050。返回主函式之後,輸出實參n 的值仍為100。可見實參的傳值調用值不隨形參的變化而變化。
5.當形參和實參不是指針類型時,在該函式運行時,形參和實參是不同的變數,他們在記憶體中位於不同的位置,形參將實參的內容複製一份,在該函式運行結束的時候形參被釋放,而實參內容不會改變。
而如果函式的參數是指針類型變數,在調用該函式的過程中,傳給函式的是實參的地址,在函式體內部使用的也是實參的地址,即使用的就是實參本身。所以在函式體內部可以改變實參的值。

形參改變實參的實例(C#語言版)

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication1{classBaseTest{///<summary>///形參改變實參的值///</summary>///<paramname="strParameter">形參</param>///<author>youngto</author>public void TestChange(refstringstrParameter){strParameter="changevalue";Console.WriteLine(strParameter);}}classProgram{staticvoidMain(string[]args){stringstrArgument="defaultvalue";Console.WriteLine(strArgumentt);//這裡實參的值沒改變。BaseTestsm=newBaseTest();sm.TestChange(refstrArgumentt);Console.WriteLine(strArgumentt);//這裡實參的值改變。}}}
輸出的值為:
default value
change value
change value
在上面的"Main()”主 程式當中演示了實參"strArgument"的值在形參的作用域當中因形參"strParameter"的改變而改變了。

相關詞條

熱門詞條

聯絡我們