函式的引數分為兩種:形參和實參
形參:形式引數,不具有實際意義的引數,是在函式宣告定義時使用的引數
實參:實際引數,具有實際資料意義的引數,是在函式呼叫時使用的引數
形參是實參的載體
實參在呼叫時通常是需要傳入到函式內部參與計算(運算),將資料以實參的形式傳遞給形參,給形參賦值,從而函式內部可以用到外部資料。
說明:
1、形參可以有多個,使用逗號分隔即可
2、傳入的實參,可以是變數或者其他有值的表示式(常量、變數、運算子計算結果)
function add($arg1,$arg2)
$num1 = 10;
add($num1,20); //編譯結果:30
執行原理:
1、系統呼叫add函式:去記憶體中尋找是否有add函式:有
2、系統會在棧區開闢記憶體空間執行函式add
3、系統會檢視函式本身是否有形參:有,兩個
4、系統會判斷呼叫的時候是否有實參:有,兩個
5、系統缺省會將實參的值$num1,20取出順序賦值給形參:$arg1和$arg2
6、執行函式體:執行
7、返回函式執行(返回值)
注意事項:
1、在php中允許實參個數多於形參個數:多餘部分函式內部不用而已
2、在php中理論上形參個數沒有限制(實際開發不會太多)
3、實參不能少於形參個數
預設值
預設值:(default value)指的是形參的預設值,在函式定義的時候,就給形參進行了乙個初始賦值,如果實際呼叫傳入的引數(實參)沒有提供,那麼形參就會使用定義時的值來進入函式內部參與運算
示例如下:
<?php
$num1 = 10;
function add($num1 = 0,$num2 = 0)
add($num1); //編譯結果:10
?>
注意事項:
1、預設值的定義一般放在最右邊的,不能左邊形參有預設值,但是右邊沒有(這樣方便呼叫,以防預設值被覆蓋造成資料錯誤)
2、函式呼叫時值按順序傳入,如果函式定義時存在預設值,可以不用傳入,
函式的傳址呼叫
實參在呼叫時會將值賦值給形參,那麼實際上使用的方式就是一種簡單的值傳遞(函式預設值傳遞),形參與外部實際傳入的引數本身沒有任何關聯關係,只是結果一樣,有的時候,希望在函式內部拿到外部資料能夠在函式內部改變,那麼在定義時就需要明確告知函式,函式才會在呼叫的時候去主動獲取外部資料的記憶體位址(在新開棧區內傳入實參的位址,同時傳入實參的值),以上這種定義形式叫做函式傳位址呼叫(傳位址呼叫形參使用&變數名)
示例如下:
<?php
function display($a,&$b) //編譯結果:50
$a = 10;
$b = 5;
display($a,$b); //錯誤呼叫示例:display(10,5);
echo $a."\n".$b;
?>
函式傳址呼叫注意事項:在呼叫的時候,必須給引用傳值的引數位置傳入實際引數,而且引數本身必須是變數(變數才有指向資料的記憶體位址而不是單純的數字) php的實參和形參
1.實參是呼叫函式時候的引數 2.形參是宣告函式時侯的引數,例如 public function demo a,b 如果宣告的函式如上,呼叫時demo 1,2,3 會自動捨棄第三個實參,但可以執行 呼叫demo 1 會報錯少乙個引數。宣告時函式可以有預設值,例如 function demo a,b ...
函式的形參和實參
函式的引數分為形參和實參兩種。形參出現在函式定義中,在整個函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作資料傳送。發生函式呼叫時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。函式的形參和實參具有...
形參和實參
函式的引數分為形參和實參兩種。形參 出現在函式定義中,在整個 函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作 資料傳送 發生函式呼叫 時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的 資料傳送 函式的形參...