函數是C語言中,組織程序的最基本的結構單元。我們最初學習C語言的第一個程序就是寫在主函數main()裡面的。在學習函數具體應用之前,我們只認識一個主函數,所有的代碼都必須寫在主函數裡面。
除此之外,我們還認識printf、scanf等函數,這些系統已經定義好了,我們直接拿過來用就可以了。
01理解「函數」
在C語言中,除了主函數、系統函數,還可以根據需要定製函數。
如果只是實現一些常規的小功能、小任務,一個主函數加部分系統函數就已經足夠了。但是,如果要編寫的是一個較大的程序,由若干功能模塊組成,且任務特殊。
按照人們化繁為簡的思維習慣,大家往往喜歡把一個複雜的問題分解成若干個小任務,當所有的小任務解決了,這個複雜的大問題也就實現了。而且在出現錯誤的時候,也能夠快速發現並及時處理。
函數就類似於這樣一個個獨立的小任務,我們把它們叫做子程序。
一般,一個C程序可由一個主程序(主函數)和若干個子程序(子函數)組成。主函數可以調用子函數,而且可以多次調用;子函數可以相互調用,但不能調用主函數。
就好像生活中,上級可以命令下級做事情,下級反過來不能指揮上級;平級之間可以相互配合做事情,這是一般規律。
其實,程序設計的思路與我們人類處理問題的思路是很相似的。通過使用函數,可以使程序變得更簡短而清晰,有利於程序維護,可以提高程序開發的效率,還可以提高代碼的重用性。
在作者C語言視頻教程中,曾以某個人開公司做類比。當公司規模很小的時候,一個人(主函數)借用社會資源(系統函數),足以處理公司所有的事務;但隨著公司規模的擴大,一個人的精力遠遠不能處理公司所有的業務,這就需要招聘新人(子函數)壯大團隊,做定製服務。
所以,結合上述生活案例。我們可以更好的理解函數:一個獨立的子程序,由相關代碼組成,能完成一定的功能,可以重複多次使用。
02函數操作兩步走
比如:公司上了一定規模,就需要招聘新人和讓新人做事情。同樣的,函數的操作也需要類似這樣的兩個步驟:
定義函數(招聘);調用函數(新人做事情);