C語言調用函數時虛實結合的方法都是采用“值傳遞”的方式,當用變量名作為函數參數時傳遞的是變量的值;當用數組名作為函數參數時,由於數組名代表的是數組首元素的地址,因此傳遞的值是地址,所以要求形參為指針變量。
在用數組名作為函數實參時,既然實際上相應的形參是指針變量,為什麼還允許使用形參數組的形式呢?
這是因為在C語言中用下標法和指針法都可以訪問一個數組(如果有一個數組a,則a[i]和*(a+i)無條件等價),用下標法表示比較直觀,便於理解,因此許多人願意用數組名作形參,以便與實參數組相對應。從應用的角度看,用戶可以認為有一個形參數組,它從實參數組那裡得到起始地址,因此形參數組和實參數組共占同一段內存單元,在調用函數期間,如果改變了形參數組的值,也就改變了實參數組的值。
注意:實參數組名代表的是一個固定的地址,或者說是一個指針常量,但形參數組名並不是一個固定的地址,而是按指針變量處理。