close
函數(function)
Function的用意就是將重複使用的程式碼,寫成一個區塊再給他一個名字,這樣要用的時候只要呼叫(Call)那個名字就好了,但是Function外面的變數並不會跟Function內的變數共用,所以有輸入值(Function處理所需要的值),然後也可以帶入之後返回一個值如(a=sin(2*pi)),像sin這樣帶入之後就直接變成一個值然後指派給a就是有回傳值的Function,而沒有回傳值的Function通常是拿來做不需要回傳,或者需要處理大於一個變數所用。
函數宣告
回傳值類型 函數名稱(輸入值類型 輸入值,.../*可選*/) { 函數內的程式碼; ... return 回傳值;//此行可選(與回傳類型有關) }
回傳值類型
主要分兩種
- 有回傳(函數Function):種類跟一般變數的種類一樣 如
- int
- float
- char 等等..
- 沒有回傳(副程式Subroutine),Sub沒有回傳值是VB上的區分,不過在C上都已Function來表示,這種function只有這個回傳類型宣告方式
- void
函數名稱
命名方式與變數相同a-z A-Z 0-9(開頭第一個字不可用數字) _等...
輸入值(可選)
你要幾個變數就用逗號隔開宣告幾個,當然不要就不需要輸入,在下方使用時就等於被宣告過了,而且其值=使用者所輸入的值,輸入值宣告方式變數一樣
注意的是,呼叫者傳入的值,會複製一份給輸入值所宣告的變數,在外面無法存取該變數,Function也無法改變外面的輸入值,兩者完全分開,互不影響
範例 有輸入
void print_squ(int a) { printf("%d^2=%d",a,a*a);//需要知道a為多少才可以 所以要輸入值 }
範例 無輸入
void newline() { printf("\n");//不需要任何變數就可以完成 }
回傳值(可選)
如果回傳值類型為非void類型,則須回傳一個該類型的值,語法及return 變數或常數;
範例 有回傳
double have_answer(double a,double b,double c) { return b*b-4*a*c; }
如果是void則不須在函數內加入return
範例 無回傳
void print(char name) { printf("%c wa baka.",name); }
函數呼叫
要呼叫一個function 就呼喚她的名字,就跟printf與scanf一樣,就是看到底有沒有回傳值,跟有沒有輸入值,以下示範呼叫方式,還有呼叫的函數必須要在自己的上方,下方呼叫者才知道他宣告的內容
- 有回傳的function,前方需要一個東西存取其回傳值,就是被assign
- 沒回傳的function,直接執行
- 有輸入值的function,名字後方的小括弧內填入要輸入的值,可以是變數或常數
- 沒輸入值的function,則直接名稱後空括弧()
範例 上方排列出來的四種function範例及呼叫方式
#include<stdio.h> void newline() //沒輸入沒回傳 { printf("\n");//不需要任何變數就可以完成 } int seven_eleven()//沒輸入有回傳 這種基本上是不可能存在的 除了類似隨機函數等 或這個完全沒意義的函數 { return 711; } void print(char name) //有輸入沒回傳 { printf("%c wa baka.",name); } double have_answer(double a,double b,double c) //有輸入有回傳 { return b*b-4*a*c; } int main() { double a=1,b=5,c=1; double D=0; char name='W'; D=have_answer(a,b,c);//有輸入值 則輸入兩個數 有輸出值 則須用東西存取(D) D=have_answer(1.0,5.0,1.0);//當然可以直接輸入數字 printf("D=%d\n",D); printf("seven:%d",seven_eleven());//因為沒輸入值 則空白() 輸出值直接輸入printf newline();//沒輸入() 沒回傳則不須用變數存取 print(name);//輸入name變數 沒回傳不須存取 return 0; }
文章標籤
全站熱搜