在程序中要存儲和表示不一樣的數據,這固然要使用不一樣的數據類型,所謂的類型就好像是一個數據的容器同樣。打個比方,在平常生活中,咱們使用杯子裝水,使用碗盛飯,不一樣的東西使用不一樣的容器。計算機的世界裏也是同樣。
計算機的世界只有二進制,而二進制來存儲數據,固然就是存在0和1的位(Bit)上,因此不一樣的類型的主要差別在於位上面的區別。這是類型的第一重意義。類型的第二個意義在於,明確表示數據的含義。好比整型類型用來表示數據,字符類型表示字符描述。
通常的程序中,會使用最基本的一些類型,好比 bool(有的也叫boolean)、int(有的也叫integer)、char或者string(字符串,也就是一段文本),這裏大概說一下這幾個類型:前端
程序結構指的是一個程序是如何組成和如何執行的,在傳統的C語言環境中,程序由一系列的定義組成,定義包含類型(自定義類型、後面會講到)定義和函數定義。而程序的執行就是從Main函數開始。函數是程序的基本執行單元。所謂函數就是定義了一個名稱,定義了一組參數(輸入),定義了返回類型(輸出,也能夠不用返回數據,就是void),而後函數體裏面進行處理。函數能夠嵌套和遞歸,嵌套就是函數裏面調用其餘函數,遞歸就是函數調用本身的過程。這些都有必要了解一下。我舉個現實中的例子:編程
string A(string message){
return B(message);
}
string B(string message){
return C(message);
}
string C(string message){
return "This is your brick";
}數組
注意,這裏我演示的例子是一個函數嵌套的例子,首先咱們看定義,咱們定義了三個函數,我把他們叫搬磚頭,每一個函數接受一個名字爲message類型爲string的參數用來表示接收的指令,返回string表示磚頭結果。(明顯看出函數3大要素,函數名,參數名和參數類型,返回類型),說完了函數定義再說函數實現,A接收到一個指令說要搬一塊磚頭,而後A把指令告訴B讓B搬一塊磚頭,而後B又把指令轉給C,而後C就返回This is your brick。這個結果實際上又往回傳遞給B而後傳遞給A最後傳遞給調用A函數的那我的。
在真正的程序中,函數的結構每每都比這個複雜,好比A中調用B,而後作一些事情而後調用C最後再返回。
還有一種狀況,那就是函數調用本身,這個叫遞歸函數,遞歸函數是一種很是好用的比較實用型的容易理解的函數。具體含義(應該是有3個要素,才能符合一個標準的遞歸函數)去網上搜一下。我這裏舉一個例子來理解,拿最著名的斐波那契數列舉例,求第N個數是多少?編程語言
int Fib(int n){
if(n<=1){
return 1;
}
return Fib(n-1) + Fib(n-2);
}函數
看上去應該很容易理解吧,你能夠發現遞歸函數的一些特徵,好比必須有一個基準點能夠返回一個值,好比函數調用本身,而且逐漸靠近基準點。編碼
其實關於函數的調用,在計算機中的處理指令通常都是入棧出棧操做,進入一個新的函數調用等因而壓入一個函數棧,調用完一個函數等因而出棧操做。關於棧是什麼後面會講到。如今最好的是體會這個過程,在大腦中想象一顆倒着的樹,最上層是函數調用者,往下就是各個子調用。本身想象一下,能夠把函數調用理解成一棵樹嗎?咱們生活中作的不少事情,你把它畫成圖,其實也能夠是一棵樹,好好發揮想象力想一下吧!code
今天就到這裏,提示一下:若是有了一點積累有了一點理解,不妨立刻用代碼把它寫出來吧,光說沒用光讀沒用,必需要寫代碼!遞歸
ps:下一次說一下程序控制流程了開發