函式參數傳遞與呼叫機制核心概念整理。
參數表為空表示不接收資料。
形參僅在呼叫時配置記憶體,返回時釋放。形參與實參各佔獨立記憶體,**無法改變呼叫端變數值**。
傳遞變數位址,雖各自操作各自變數,但位址相同,**被呼叫函式可修改呼叫端變數值**。
C 語言回傳類型可為除陣列、函式外的任何類型,含指標。關鍵限制:**不可回傳自動區域變數位址**(返回時已銷毀),全域變數無需回傳位址。回傳位址應為靜態區域變數或動態配置記憶體。
// 正確:回傳參數字串內部位址
extern char *strchr(char *str, char character) {
while (*str != character) str++;
return str;
}
// 錯誤:回傳區域陣列位址
char *strchr(char *str, char character) {
char* substr;
substr[0] = str[0];
return substr; // 回傳無效位址,得亂碼
}
傳址呼叫與回傳指標本質不同:前者透過參數傳遞位址,後者以傳值方式回傳位址資料。