導讀:一般學一門計算機語言的第一堂上機課(“上機”顧名思義,上計算機,機你太美),就是往屏幕輸出“hello world”,本章也不例外。
3.1 Hello,World!
這一節和讀者一起來編寫第一段C語言程序,過程詳細到令人發指。
3.1.1 創建C語言源碼文件
打開 Dev C++,在上方菜單欄中選擇“文件 --> 新建 --> 源代碼”,如圖3.1,
圖3.1 創建源代碼文件
3.1.2 輸入一段代碼
用鍵盤輸入以下代碼,先輸入,等會再分析:
#include <stdio.h> void main() { printf("hello,world"); }
圖3.2 輸入第一段代碼
3.1.3 文件保存
保存到自定義的目錄下,給這個C語言程序的取名為helloworld.c,后綴為“c”,說明此文件就為C語言程序文件。
圖3.3 保存為后綴為c的文件
3.1.4 編譯運行
點擊“運行 --> 編譯運行”,為什么要編譯運行呢,根據不同操作系統,比如windows的可執行文件后綴為"exe",所以編譯c語言文件為可執行的exe文件,這樣才能在windows下執行。
圖3.4 編譯運行代碼
3.1.5查看運行結果
圖3.5 執行結果
可以發現,在保存helloworld.c的文件夾下面,多了一個helloworld.exe,這個就是編譯鏈接后生產的可執行文件,一般電腦要關閉殺毒軟件就能執行它了。
下一節會簡明的說一下這段程序的意思。
3.2 初識C語言代碼
本節主要講解上一節寫的五行C語言程序。
#include <stdio.h> void main() { printf("hello,world"); }
下面就針對代碼的每一行進行講解。
3.2.1 #,<>,(),{},"",;這些符號有什么用?
首先我們得清楚一個概念,編譯器神通廣大!
看到這么多符號,比如:#,<>,()......等等,先別緊張,它們都是給編譯器標識語句用的,這一小節先暫時不去考慮它們的意思,只要記住,編譯器有它識別的規范,這些都是規定好的,照做既可。
注意:咱們中國人一般吧"#"念做井號,外國人應該把它念做Sharp,不管它怎么念,C語言要會寫會用即可,程序員一般話不多說,直接用代碼說事。
3.2.2 #include <stdio.h>
C語言代碼需要用到C庫里面的功能的話,就需要申明頭文件,聲明頭文件的格式需要用到符號“#”,以及關鍵字include,然后把需要用到的頭文件放入<>符號中,比如本節用的<stdio.h>,就把頭文件stdio.h放入<>之中。
新手肯定要開始困惑了,啥是C庫?啥是“聲明”?頭文件又是什么東東?為啥要用到"#"?那就由我來逐一解釋吧。
注意:如果解釋的不夠詳細,請在下發評論,筆者會重新修改這方面的解釋的,謝謝。
C庫與頭文件:C語言為了減輕程序員的工作量,提供了C庫。C庫里面有好多好多功能,好多好多文件。為了編譯速度快些,所以當程序員需要使用C庫的某些功能的時候,就需要添加相關頭文件來表明,不需要就不添加。比如我們用到的stdio.h這個頭文件吧,這個就是標准的C庫輸入輸出頭文件,相關功能下一小節詳細介紹。
注意:讀者暫時可以這么理解,輸入就是接受鍵盤的輸入,輸出就是屏幕上輸出顯示。
聲明與#include:上述說過,當程序員需要使用C庫的某些功能的時候,就需要添加相關頭文件來表明,這個過程就是聲明,聲明頭文件用到標識符#,然后再用到關鍵字include,這些都是C語言代碼格式的規定,照着做就是了,以后代碼寫多了也就漸漸明白了。
提示:可以知道include的直譯意思就是包含,包括。
3.2.3 printf("hello world");
上一小節說到stdio.h這個頭文件,是標准C庫的輸入輸出頭文件。我們已經聲明了這個頭文件,所以就可以使用頭文件里所有的功能,其中一個就是printf功能。
注意:聲明頭文件辦法之前說過,這么做:#include <stdio.h>
先直譯一下printf,print的意思就是打印,f的意思筆者認為是flow的縮寫,就是流,所以printf的意思就是打印流或者叫輸出流,最終輸出流輸出到顯示屏上顯示出來。
注意:流好比高山流水的水流,計算機編程里面用流來表示要流過CPU的數據流,這里的輸出流就是要輸出到顯示屏的數據流。如果比較拗口可以多讀幾遍,實在抱歉。
圖3.6 數據流
本節我們輸出到顯示屏上的文字是hello world,現在需要讀者打開Dev-C++,打開helloworld.c,把鼠標移動到printf中,按下鍵盤“Ctrl”,會發現鼠標顯示變成了手的形狀,點擊鼠標可以看到如下代碼:
int __cdecl printf(const char * __restrict__ _Format,...);
看着似乎有點復雜呢,不急,本小節只需要知道printf的使用方法之一,輸出文本流即可,用法就是在printf后的括號里面,添加雙引號“”,再把需要輸出的文本流放入雙引號里面就行了,最后括號外面添加分號;即可:
printf("hello world");
讀者可以自行修改需要輸出到顯示屏的文本流,看看效果體驗一下吧。
3.2.3 void main()與{}
void是定義不需要返回值,為空的意思。
main是主函數。
()的意思等同於庫函數printf的(),用來輸入參數用的。
{}標識函數體的起始。
這里涉及的返回值,函數,參數等知識,讀者先不用考慮,后面章節會逐一解釋,目前讀者只需要死記住,每次寫程序套用這個格式即可:
void main() { 所有程序內容寫在{}里面 }
程序寫在大括號{}里即可。
3.3 初識編程規范
寫程序的時候,每個人的品味不同,寫出來的程序風格也會有區別,但是大體上要參照一定的格式,為的是能讓一般程序員看的舒服。比如聲明頭文件的時候,#include <stdio>,在include后面會加一個空格,再比如main函數的函數體內,printf語句前會添加四個空格,也就是一個TAB按鍵空出的空間。
以后代碼寫多了再好好規范一下,目前只是初識。如果本節還有什么部分不清楚的,歡迎在評論區留言,謝謝。