當前位置:學者齋 >

計算機 >C語言 >

C語言函式的引數和返回值

C語言函式的引數和返回值

C 語言可以象組合語言一樣對位、位元組和地址進行操作。那麼大家知道C語言函式的引數和返回值是什麼呢?下面一起來看看!

C語言函式的引數和返回值

如果把函式比喻成一臺機器,那麼引數就是原材料,返回值就是最終產品;函式的作用就是根據不同的引數產生不同的返回值。

函式的引數

在函式定義中出現的引數可以看做是一個佔位符,它沒有資料,只能等到函式被呼叫時接收傳遞進來的資料,所以稱為形式引數,簡稱形參。

函式被呼叫時給出的引數包含了實實在在的資料,會被函式內部的程式碼使用,所以稱為實際引數,簡稱實參。

形參和實參的功能是作資料傳送,發生函式呼叫時,實參的值會傳送給形參。

 形參和實參有以下幾個特點:

1) 形參變數只有在函式被呼叫時才會分配記憶體,呼叫結束後,立刻釋放記憶體,所以形參變數只有在函式內部有效,不能在函式外部使用。

2) 實參可以是常量、變數、表示式、函式等,無論實參是何種型別的資料,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。

3) 實參和形參在數量上、型別上、順序上必須嚴格一致,否則會發生“型別不匹配”的錯誤。

函式呼叫中發生的資料傳送是單向的,只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。

示例】計算 1+2+3+...+(n-1)+n 的值。

#includeint sum(int n){ int i; for(i=n-1; i>=1; i--){ n+=i; } printf("The inner n = %d",n); return n;}int main(){ int m, total; printf("Input a number: "); scanf("%d", &m); total = sum(m); printf("The outer m = %d", m); printf("1+2+3+...+%d+%d = %d", m-1, m, total); return 0;}

執行結果:

Input a number: 100↙

The inner n = 5050

The outer m = 100

1+2+3+...+99+100 = 5050

通過 scanf 輸入 m 的值,作為實參,在呼叫 sum 時傳送給形參 n。

從執行情況看,輸入 m 值為100,即實參 m 的值為100,把這個值傳給函式 sum 時,形參 n 的.初值也為100,在函式執行過程中,形參 n 的值變為 5050。函式執行結束後,輸出實參 m 的值仍為100,可見實參的值不隨形參的變化而變化。

 函式的返回值

函式的返回值是指函式被呼叫之後,執行函式體中的程式段所取得的值,可以通過return語句返回。

return語句的一般形式為:

return 表示式;

或者:

return (表示式);

例如:

return max;

return a+b;

return (100+200);

函式中可以有多個 return 語句,但每次呼叫只能有一個return 語句被執行,所以只有一個返回值。

一旦遇到 return 語句,不管後面有沒有程式碼,函式立即執行結束,將值返回。例如:

int func(){ int a=100, b=200, c; return a+b; return a*b; return b/a;}

返回值始終 a+b 的值,也就是300。

沒有返回值的函式為空型別,用void進行說明。例如:

void func(){ printf("Hello world!");}

一旦函式的返回值型別被定義為 void,就不能再接收它的值了。例如,下面的語句是錯誤的:

int a = func();

為了使程式有良好的可讀性並減少出錯, 凡不要求返回值的函式都應定義為 void 型別。

  • 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/cyuyan/o6l2vn.html