日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言精髓篇|函数的参数和返回值

發布時間:2023/12/2 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言精髓篇|函数的参数和返回值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果把函數比喻成一臺機器,那么參數就是原材料,返回值就是最終產品;從一定程度上講,函數的作用就是根據不同的參數產生不同的返回值。

函數的參數

在函數定義中出現的參數可以看做是一個占位符,它沒有數據,只能等到函數被調用時接收傳遞進來的數據,所以稱為形式參數,簡稱形參。
函數被調用時給出的參數包含了實實在在的數據,會被函數內部的代碼使用,所以稱為實際參數,簡稱實參。
形參和實參的功能是傳遞數據,發生函數調用時,實參的值會傳遞給形參。
形參和實參有以下幾個特點:
1) 形參變量只有在函數被調用時才會分配內存,調用結束后,立刻釋放內存,所以形參變量只有在函數內部有效,不能在函數外部使用。
2) 實參可以是常量、變量、表達式、函數等,無論實參是何種類型的數據,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。
3) 實參和形參在數量上、類型上、順序上必須嚴格一致,否則會發生“類型不匹配”的錯誤。當然,如果能夠進行自動類型轉換,或者進行了強制類型轉換,那么實參類型也可以不同于形參類型。
4) 函數調用中發生的數據傳遞是單向的,只能把實參的值傳遞給形參,而不能把形參的值反向地傳遞給實參;換句話說,一旦完成數據的傳遞,實參和形參就再也沒有瓜葛了,所以,在函數調用過程中,形參的值發生改變并不會影響實參。請看下面的例子:

#include //計算從1加到n的值 int sum(int n){ int i; for(i=n-1; i>=1; i--){ n =i; } printf("The inner n = %d\n",n); return n; } int main(){ int m, total; printf("Input a number: ");scanf("%d", &m); total = sum(m); printf("The outer m = %d \n", m); printf("1 2 3 ... %d %d = %d\n", 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);

1) 沒有返回值的函數為空類型,用void表示。例如:

void func(){printf("http://c.biancheng.net\n");}

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

int a = func();

為了使程序有良好的可讀性并減少出錯, 凡不要求返回值的函數都應定義為 void 類型。
2) return 語句可以有多個,可以出現在函數體的任意位置,但是每次調用函數只能有一個 return 語句被執行,所以只有一個返回值(少數的編程語言支持多個返回值,例如Go語言)。例如:

//返回兩個整數中較大的一個int max(int a, int b)_(a > b){return a;}else{return b;}}

如果a>b成立,就執行return a,return b不會執行;如果不成立,就執行return b,return a不會執行。
3) 函數一旦遇到 return 語句就立即返回,后面的所有語句都不會被執行到了。從這個角度看,return 語句還有強制結束函數執行的作用。例如:

//返回兩個整數中較大的一個int max(int a, int b){return (a>b) ? a : b;printf("Function is performed\n");}

第 4 行代碼就是多余的,永遠沒有執行的機會。
下面我們定義了一個判斷素數的函數,這個例子更加實用:

#include int prime(int n){ int is_prime = 1, i; //n一旦小于0就不符合條件,就沒必要執行后面的代碼了,所以提前結束函數 if(n < 0){ return -1; } for(i=2; iif(n % i == 0){ is_prime = 0; break; } }return is_prime;} int main(){ int num, is_prime; scanf("%d", &num); is_prime = prime(num); if(is_prime < 0){ printf("%d is a illegal number.\n", num); }else if(is_prime > 0){ printf("%d is a prime number.\n", num); }else{ printf("%d is not a prime number.\n", num); }return0;}

prime() 是一個用來求素數的函數。素數是自然數,它的值大于等于零,一旦傳遞給 prime() 的值小于零就沒有意義了,就無法判斷是否是素數了,所以一旦檢測到參數 n 的值小于 0,就使用 return 語句提前結束函數。
return 語句是提前結束函數的唯一辦法。return 后面可以跟一份數據,表示將這份數據返回到函數外面;return 后面也可以不跟任何數據,表示什么也不返回,僅僅用來結束函數。
更改上面的代碼,使得 return 后面不跟任何數據:

#include void prime(int n){ int is_prime = 1, i; if(n < 0){ printf("%d is a illegal number.\n", n); return; ?//return后面不帶任何數據 } for(i=2; iif(n % i == 0){ is_prime = 0; break; } } if(is_prime > 0){ printf("%d is a prime number.\n", n); }else{ printf("%d is not a prime number.\n", n); } } int main(){ int num; scanf("%d", &num); prime(num); return 0;}

prime() 的返回值是 void,return 后面不能帶任何數據,直接寫分號即可

聲明:

本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。

總結

以上是生活随笔為你收集整理的C语言精髓篇|函数的参数和返回值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。