C/C++函數簡介
函數是什麼,函數實際上就是一種接口。
基本上一個函數總是完成一個特定的功能。
當各種各樣的功能在一起合成一個完整的實用的程序。
但有一個特例,一個名爲 main 的稱爲主函數,是所有程序的入口函數,
這是程序唯一能夠跟系統(程序外部)進行通信的一個函數。
類似於一部手機,你需要充電的時候就接上充電的接口,
需要聽歌就應該接上耳機的接口,其各個接口完成自己特定的功能。
一個正確的函數總是會有以下幾部分組成:
- 一個類型名:
用於指定函數的返回值的類型。
- 一個函數名:
其名字由程序員規定。一般來說,
我們根據函數需要完成的功能來對其命名
- 一個用括號( )包含的參數表:
參數的個數由程序員根據需要來決定,
甚至你還可以不使用函數。
- 一個用花括號 { } 包圍的函數體:
函數體裏面的代碼則是函數完成特定功能的整個執行過程。
以下我們給出一個函數:
int AddOne (int val)
{
val = val+1;
return val;
}
讓我們來對這個簡單的函數來分析一下:
int:
函數名前面的 int 具有兩層意思,
第一層意思表示該函數必須要有返回值。
第二層意思表示該函數返回值的類型必須是一個整數。
AddOne:
可以看到,我們的函數名說明了這個函數的功能。
即具有 Add(增加)One(1)的功能。
(int val):
括號裏面有一個名爲val(隨意命名)的參數,
該參數名前面的 int 指定了函數會接收一個整數類型值。
函數體:
假設我們以整數 10 來調用這個函數即 AddOne(10),
對應的,val 收到了整數 10 ,即相當於 val=10,
緊接着,它開始執行函數體裏的第一句代碼,
它先把自己加1 (val+1)得到的結果(11)再覆蓋自己原先的值。
即 val = val + 1 的結果相當於 val = 11 。
接着,它執行第二條語句,return 其後面跟着 val,返回這個新值 11。
完畢!
這個函數其實挺有意思,如果你在 main 函數裏是這樣調用它:
int main (void)
{
int n = 10;
n = AddOne (n);
n = AddOne (n);
return 0;
}
分析:
程序聲明瞭一個變量 n 來動態保存函數的返回值。
n 最初被初始化爲整數 10,那麼一切就會從 10 開始。
在第一次調用 AddOne 函數時,此時 n 爲 10,
該函數將 10 加 1 再返回,此時相當於 n = 11。
在第二次調用 AddOne 函數時,此時 n 爲 11,
在AddOne 函數裏又加1再返回,相當於 n = 12。
之後,程序執行 return 0 向系統返回一個 0 狀態,
表示程序運行成功且正常退出。
從以上分析可以看出,AddOne 函數被調用幾次,
n 的值就會被增加幾次 1 。
以下給出完整 C/C++ 程序
C++ 程序:
/*********** Add.cpp ************/
#include // 輸入輸出頭文件
int AddOne (int val); // 函數聲明
// 主函數
int main (void)
{
int n = 10;// 聲明變量 a 初始化爲10
n = AddOne(n);// 第一次調用
n = AddOne(n);// 第二次調用
std::cout << n << std::endl;//輸出 n 的最終值
return 0;// 給系統返回 0 狀態表示運行成功
}
// 函數實現
int AddOne (int val)
{
val = val+1;// 將值加1再覆蓋自己本來的值
return val;// 返回新值
}
C 程序:
/*********** Add.c ************/
#include <stdio.h> // 輸入輸出頭文件
int AddOne (int val); // 函數聲明
// 主函數
int main (void)
{
int n = 10;// 聲明變量 a 初始化爲10
n = AddOne(n);// 第一次調用
n = AddOne(n);// 第二次調用
printf ("%d\n", n);//輸出 n 的最終值
return 0;// 給系統返回 0 狀態表示運行成功
}
// 函數實現
int AddOne (int val)
{
val = val+1;// 將值加1再覆蓋自己本來的值
return val;// 返回新值
}