1. 函式介紹
函式在C語言中,有相當重要的地位,他可以避面許多繁瑣的步驟,並將自己的程式變得淺顯易懂。
之前有提到過printf()的由來,它的本質上也是一個函式。(include在stdio.h函式庫中)
現在我們也能自己創造一個屬於我們自己的函示,那就趕快來動手吧~
函式的特色:
- 一段程式碼,執行特別的工作。
- 可重複使用
- 讓程式變得淺顯易懂
- 在呼叫函式不變的狀況下,可以直接修改程式。
2. 函式宣告
從一個簡單的例子開始講起,我們要寫一個計算正方形的程式,並且使用函式呈現。
組成函式有幾個條件:
- 在主程式上方,需要宣告他的函式原型(跟程式說我設的函式大概有什麼東西等等)
回傳值型態 函式名稱 (參數)
2. 主要的函式,定義函式要怎麼使用。
沒有回傳值:void square(int length)
在下方的程式中,當我們程式跑到square(length)中,代表他呼叫了下方void square函式,而因為這個函式沒有回傳值,所以在印出答案中後,就直接結束程式的執行了(可以想像有一個return 0 函式下方)。
有回傳值:int square(int len)
回傳一個int的型態回去主程式
在下方的程式中,當我們程式跑到square(length)中,代表他呼叫了下方int square函式,而因為這個函式有回傳值,所以在進行計算過後,我們有一個return x,把計算過後的答案傳回到主程式(ans就會等於回傳值x),印出答案後程式結束執行。
3. 函式中的參數
函式中的參數不一定只有一個,可以有兩個、三個或多個參數。
兩數相加的程式,裡面的參數會有兩個,若想要三數相加可以在參數那格中多加一個變數。以下為參考程式。
4. 變數的範圍(Variable Scope)
變數的範圍,也可以說是變數程式中的可識別度。
我們分成
— global (全域變數)整個程式中皆可以使用此變數
— local (區域變數)只能在部分函式中使用
ex: 上一題兩數相加,在函式sum中,所設的變數x,就只能在函式sum中使用,若x出現在主程式中,電腦會不知道x是什麼,會出現error,若要使用需要再重新宣告一次。
#include <stdio.h>
int global1 = 0; // 全域變數
int main() {
int local1 = 2, local2 = 3; // 區域變數
global1 = local1 + local2; printf("%d \n", global1); /* 5 */
return 0;
}
說明:
global宣告在主程式外,代表全部的程式都可以使用,包含自己所設的函式。
local宣告在主程式內,只有主程式內可以使用,若外部有宣告函式,則不可以使用?
5. 靜態變數(Static Variable)
static變數,是一個區域變數,但不會因為函式執行結束,變數內的資料就不見。例如:
上面的for迴圈,是為了要進入此函式五次才設定的。函式內部的X沒有因為離開函式後,其數字重新歸零,而是繼續累加。這就是static變數的最大特色。要等到程式全部結束後,X才會回到原本預設的狀態。
練習:請用函式寫出一個計算正三角形面積(可以查公式)的程式,答案要小數點下3位。
輸入:3
輸出:3.897
參考程式在下方:
#include<stdio.h>
#include<math.h> //為了使用sqrt(開根號之意,可以上cplusplus查詢)void Triangle( int );int main()
{
int a;
scanf("%d", &a);Triangle(a);return 0;
}void Triangle(int a)
{
float area = 0;
area = sqrt(3) / 4 * a * a; // 公式printf("%.3f\n", area);
}
這節的課程比較複雜,謝謝大家有耐心的看完,若有什麼錯誤還請多多指教~