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