函數參數與函數調用
1、函數調用的作用:
·用實參數向形式參數傳遞數據;
·為獲得數據參數及在函數體中聲明的變量分配存儲空間;
·中斷現行(調用)函數,把流程向被調用函數的入口處,開始執行被調函數。
當參數表為空時,表示該函數不從調用函數接受數據。
2、數值參數
傳值調用:形參只有在函數被調用時,才被分配內存區域,並一直保留到函數返回時被撤銷為止。形參和實參只是名字相同,各自占有各自的內存空間和生存周期,因此他並不能改變主調函數中的變量。
3、地址參數
傳址調用:傳送的是變量的地址,盡管主函數和被調函數各自在自己的變量上操作,但他們的地址是一樣,所以被調函數可以改變調用函數中變量的值。
返回指針的函數
在C語言中,函數的返回類型可以是除數組和函數以外的任何類型,包括返回一個指針類型的數據。
例子1:// 查找字符串中指定字符的原函數
extern char *strchr(char *str,char character)
{
while(*str!=character)
str++;
return(str);
}
··
注意... 與傳址調用不同,返回指針的函數是以傳值方式向調用函數返回數據的。因此不可用 自動變量的地址 作為返回值,因為這類變量在返回時將被撤銷。而全局變量又用不著返回地址。因此,返回的地址變量應是局部變量的或者動態的。
例子2://錯誤的 得到的是亂碼
char *strchr(char *str,char character)
{
char* substr;
substr[0]=str[0];
return substr;
}