c語言函式是一組一起執行乙個任務的語句。每個c程式都至少有乙個函式,即main()主函式,所有簡單的程式都可以定義其他額外的函式。
函式申明告訴編譯器函式的名稱,返回型別和引數。函式定義提供了函式的實際主體。
以下是max( )函式的源**,會返回這兩個數中較大的那個。
int max(int num1,int num2)
int result; //區域性變數申明
if(num1 > num2)
result = num1;
else
result = num2;
return result;
在c語言中,函式是由乙個函式頭和乙個函式主題組成。
(1)返回型別:乙個函式可以返回乙個值。return_type是函式返回值的型別。有些函式執行所需的操作二部返回值,在這種情況下,
return_type
是關鍵字
void
。(2)函式名稱:是函式的實際名稱,函式名和引數列表一起構成了函式簽名。
(3)引數:引數就像是佔位符,當函式呼叫時,向函式傳遞了乙個值,這值被稱為實際引數,引數列表包括函式引數的型別,順序,數量,引數是可選的,也就是說,函式可能不包含引數。
(4)函式主體:包含一組定義函式執行任務的語句。
函式宣告會告訴編譯器函式名稱及如何呼叫函式。函式的實際主體可以單獨定義。
針對上面定義的max()函式,以下是函式宣告:
int max(int num1,
int num2);
在函式申明中。引數的名稱不重要,只有引數的型別是必須的,因此可修改函式申明:
int max(int,
int );
在乙個原始檔中定義函式且在另乙個檔案中呼叫函式時,函式宣告是必須要的,在這種情況下,應該在呼叫函式的檔案頂部宣告函式。
建立c函式時,會定義函式做什麼,然後通過呼叫函式來完成以定義的任務。
當程式呼叫函式時,程式控制權會轉移給被呼叫的函式。被呼叫的函式執行已定義的任務,當函式的返回語句被執行時,或到達函式的結束括號時,會把程式控制權交還給主程式。
呼叫函式時,需要傳遞其所需的引數;如果函式有乙個返回值,則可以接收其返回值。
#include
/*函式申明
*/int max(int num1,int num2);
int main()
/*區域性變數
*/int a=100;
int b=200;
int ret;
/*呼叫函式來獲取最大值
*/ret = max(a,b);
printf("max value is:%d\n",ret);
return 0;
/*函式返回兩個數中較大的那個數
*/int max(int num1,int num2)
/*區域性變數宣告
*/int result;
if(num1 > num2)
retult = num1;
else
retult = num2;
return result;}把
max()
函式和
main()
函式放一塊,編譯源**。當執行最後的可執行檔案時,會產生下列結果
:max value is:
200形參:在函式定義中出現的引數可以看做是乙個佔位符,它沒有資料,只能等到函式被呼叫時接收傳遞進來的資料。實參:
函式被呼叫時給出的引數包含了實實在在的資料,會被函式內部的**使用,所以稱為實際引數。
形參和實參的功能是作資料傳送,發生函式呼叫時,實參的值會傳送給形參。
形參和實參的特點:
1) 形參變數只有在函式被呼叫時才會分配記憶體,呼叫結束後,立刻釋放記憶體,所以形參變數只有在函式內部有效,不能在函式外部使用。
2) 實參可以是常量、變數、表示式、函式等,無論實參是何種型別的資料,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。
3) 實參和形參在數量上、型別上、順序上必須嚴格一致,否則會發生「型別不匹配」的錯誤。
函式呼叫中發生的資料傳送是單向的,只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。
int func()
int a=100,b=200,c;
return a+b;
return a*b;
return b/a;
返回值始終a+b的值,也就是300;
例如:void func()
例如,下面的語句是錯誤的:
int a=func();
任何一種程式設計中,作用域是程式中定義的變數所存在的區域,超過該區域變數就不能被訪問。
c 語言中有三個地方可以宣告變數:
(1)讓我們來看看什麼是區域性變數、全域性變數和形式引數。在函式或塊內部的區域性變數
(2)
在所有函式外部的全域性變數
(3)
在形式引數的函式引數定義中
3.6.1
區域性變數
在某個函式或塊的內部宣告的變數稱為區域性變數。 它們只能被該函式或該**塊內部的語句使用; 區域性變
量在函式外部是不可知的。
3.6.2 全域性變數
全域性變數是定義在函式外部,通常是在程式的頂部。全域性變數在整個程式生命週期內都是有效的,在任意
的函式內部能訪問全域性變數。
全域性變數可以被任何函式訪問。也就是說,全域性變數在宣告後整個程式中都是可用的。
在程式中,區域性變數和全域性變數的名稱可以相同,但是在函式內,區域性變數的值會覆蓋全域性變數的值 。
3.6.3 函式形參
函式的引數,形式引數,被當作該函式內的區域性變數,它們會優先覆蓋全域性變數。
程式設計練習 程式設計入門 C語言
程式每次讀入乙個正三位數,然後輸出逆序的數字。注意,當輸入的數字含有結尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。簡單一點 include intmain 複雜一點 需要考慮到百位十位為零的情況 include intmain return0 utc是世界協調時,bjt是北京時間,...
C語言入門學習(3 1) 順序結構程式設計
課程要求 1 掌握程式設計的基本思想 2 熟悉及掌握c語言基本資料型別 int,long,float,double 的說明 3 掌握格式輸入函式scanf的靈活應用 4.掌握格式輸出函式printf的靈活應用 5.算術表示式在實際問題中應用 6.必須掌握的演算法1.兩數的交換 2.拆數法 實驗例題 ...
C語言入門 6 函式入門
1.函式是什麼?函式是一塊 一組一起執行乙個任務的語句。函式接受零個或多個引數,計算完成返回零個或乙個值。函式的作用 重複使用 2.函式怎麼用?2.1 呼叫函式 在數學中有很多的函式,可以直接在c語言中使用,例如 sin cos 這些函式的使用方法與數學使用方法是一致的。使用函式通常稱為呼叫函式。函...