這個C語言專題煮仇,是學習C/C++開發(fā)的前奏。也為了讓有面向對象語言開發(fā)經驗的程序員谎仲,能夠快速上手C語言浙垫。如果你還沒有編程經驗,或者對C語言郑诺、C/C++開發(fā)不感興趣夹姥,請?zhí)^
在本文中我們已經創(chuàng)建了一個C程序,接下來分析一下里面的代碼辙诞。
項目結構如下:
一辙售、代碼分析
打開項目中的main.c文件(C程序的源文件拓展名為.c),可以發(fā)現(xiàn)它是第一個C程序中的唯一一個源文件飞涂,代碼如下:
最后想要更深入學習的可以加下我自己建的C/C++學習交流群231662552旦部,歡迎喜歡C/C++的各位大神小神前來學習交流,每天晚上群里面也會有大佬直播企業(yè)項目開發(fā)學習较店,更有各種項目案例供你自己學習哦
1.#include
#include 是C語言的預處理指令之一士八,所謂預處理,就是在編譯之前做的處理梁呈,預處理指令一般以 # 開頭
#include 指令后面會跟著一個文件名婚度,預處理器發(fā)現(xiàn) #include 指令后,就會根據文件名去查找文件捧杉,并把這個文件的內容包含到當前文件中陕见。被包含文件中的文本將替換源文件中的 #include 指令,就像你把被包含文件中的全部內容拷貝到這個 #include 指令所在的位置一樣
如果被包含的文件拓展名為.h味抖,我們稱之為"頭文件"(Header File)评甜,頭文件可以用來聲明函數("函數"就是面向對象中的"方法"),要想使用這些函數,就必須先用 #include 指令包含函數所在的頭文件
#include 指令不僅僅限于.h頭文件仔涩,可以包含任何編譯器能識別的C/C++代碼文件忍坷,包括.c,.hpp,.cpp等,甚至.txt,.abc等等都可以
也就是說你完全可以將第3行到第9行的代碼放到其他文件中,然后用 #include 指令包含進來,比如:
1> 將第3行到第9行的代碼放到my.txt中
2> 在main.c源文件中包含my.txt文件
程序還是可以照常運行的佩研,因為 #include 的功能就是將文件內容完全拷貝到 #include 指令所在的位置
不過你可能會疑惑柑肴,為什么stdio.h用尖括號<>,而my.txt用雙引號"" 旬薯?這個很好區(qū)別晰骑,如果是系統(tǒng)自帶的文件,最好用<>绊序;如果是開發(fā)人員自己創(chuàng)建的文件硕舆,最好用""
說明:這里用txt文件純屬演示,平時做項目不會這樣做骤公,除非吃飽了撐著抚官,才會把代碼都寫到txt中去
2.main函數
前面也已經提到,C中的函數就是面向對象中的"方法"阶捆。C語言是一門面向過程的語言凌节,是以過程為中心的編程思想,就是先分析出解決問題所需要的步驟洒试,然后用函數把這些步驟一步一步實現(xiàn)倍奢,使用的時候一個一個依次調用函數就可以了
一個C程序中一定會有一個main函數,也只能有一個main函數儡司。main函數是整個C程序的入口娱挨。main.c的第3行代碼就定義了一個main函數。
main函數的返回值為int類型捕犬,接收2個參數跷坝,其實可以不寫參數
main函數可以簡化成這樣:
這里要注意的是:這里的main函數沒有寫返回值類型,并不代表函數沒有返回值碉碉,而是表示返回值類型為int類型柴钻,void才代表函數沒有返回值
由于C語言的語法限制不嚴格,我們還可以進一步簡化main函數:
雖然它要求main函數返回int類型的值垢粮,但我們可以不返回贴届,但是我們一般都是有返回值的,因為以后C++不兼容不帶返回值的主函數
3.stdio.h
stdio.h 是C語言函數庫中的一個頭文件蜡吧,里面定義了一些標準輸入輸出函數毫蚓。在main.c的第1行代碼中,用#include指令包含了stdio.h文件昔善。
這里之所以包含 stdio.h 文件元潘,是因為在第7行中用到了在 stdio.h 內部聲明的printf函數,這個函數可以向標準輸出設備(比如顯示器屏幕)輸出數據君仆,屏幕上輸出的文字就是第7行代碼printf("Hello, World!");造成的翩概,雙引號""內的文本為C語言的字符串
二牲距、開發(fā)和運行C程序的步驟
步驟圖如下:
1.編寫程序
C語言源文件的擴展名為".c",源文件以ASCII碼形式存儲钥庇,不能直接被計算機執(zhí)行牍鞠,因為計算機只能識別二進制指令,也就是0和1
2.編譯(VC環(huán)境下)
把C的源程序翻譯成計算機可以識別的二進制形式的目標代碼文件评姨,這個過程稱為編譯难述,由C的編譯器完成
在編譯的同時,還對源程序的語法等進行檢查吐句。若出現(xiàn)語法錯誤龄广,則編譯失敗。如果編譯成功則生成目標文件蕴侧,目標文件名跟源程序文件名一樣,擴展名為".obj"两入。比如净宵,mj.c編譯后生成目標文件mj.obj
每個源文件是單獨進行編譯的,假如一個項目中有多個.c源文件裹纳,編譯成功會生成多個對應的.obj目標择葡。一般情況下,目標文件之間是有關聯(lián)的剃氧,比如 a.obj 可能會調用 b.obj 中定義的一個函數敏储,因此它們都不能夠單獨被計算機執(zhí)行,而且目標文件中并不包含程序運行所需要的庫函數等
3.鏈接(VC環(huán)境下)
將所有有關聯(lián)的obj目標文件朋鞍,以及系統(tǒng)提供的C庫函數等組合在一起生成可執(zhí)行文件的過程已添,稱為"鏈接"
鏈接生成的可執(zhí)行文件的文件名跟源程序文件同名,擴展名為".exe"滥酥,計算機可以直接執(zhí)行
4.運行
* 在Windows環(huán)境下更舞,直接雙擊".exe"文件即可運行C語言程序
三、總結
最后想要更深入學習的可以加下我自己建的C/C++學習交流群231662552坎吻,歡迎喜歡C/C++的各位大神小神前來學習交流缆蝉,每天晚上群里面也會有大佬直播企業(yè)項目開發(fā)學習,更有各種項目案例供你自己學習哦
說了這么多瘦真,總結一下第一個C程序的運行步驟:
1.在編譯前先執(zhí)行#include指令刊头,拷貝stdio.h的內容到源程序中
2.編譯源程序,生成目標文件
3.鏈接C語言函數庫诸尽,生成可執(zhí)行文件
4.運行可執(zhí)行文件原杂,在屏幕上輸出"Hello, World!