函式/函數也是很多程式語言的必備語法,一般而言,會有語言的內建函式及自定義函式。
一般而言,程式語言會有內建函式,例如,scanf()及printf()都是C及C++的內建函式,C及C++的內建函式相當的多,無法一一介紹。
這邊主要介紹的是我們自行定義的函式,有時候,有些程式碼的邏輯會重複,我們就可以利用函式來重複利用這些邏輯。
其實我們一直在寫的main(),本身就是個函式,執行C及C++時,就會呼叫這個預設的函式。
#include <stdio.h>
main(){
printf("hello!");
}
一個基本的函式,包括函式的名稱,透過函式名稱後的括號,定義函式的引數/參數,也可以定義函式的回傳值型態。假如,我們寫一個相加的函式,傳入兩個整數,要回傳相加的結果,結果是個整數,函式寫成:
#include <stdio.h>
**int add(int a, int b){
return (a+b);
}**
main(){
int first = 0, second = 0;
scanf("%d %d", &first, &second);
int result = **add(first, second);**
printf("result: %d", result);
}
在C及C++裡,傳遞引數/參數的方式是依順序傳遞,所以,雖然在main()裡,變數稱為first、second,在add裡,可以重新命名為a、b。另外,在C及C++裡,傳遞變數是採用傳值(call by value)的方式進行,也就是first、second的值被複製一份到a、b裡面,在add裡如果更動a、b的內容,是不會變更first、second的內容。
#include <stdio.h>
int add(int a, int b){
int c = a + b;
a++;
b++;
return c;
}
main(){
int first = 0, second = 0;
scanf("%d %d", &first, &second);
int result = add(first, second);
printf("result: %d\\n", result);
printf("first, second: %d %d", first, second);
}
我們在add()裡是無法直接使用first、second,編譯時,就會有錯誤訊息,「’first’ undeclared」。