1. 第一個C語言程序:Hello World
開始的第一個程序是一個最簡單的程序,也就是最經(jīng)典的Hello World程序瑞躺,它的功能為打印出Hello World
。程序的內(nèi)容非常簡單镐捧,也是C語言編寫程序的基本結構框架支救。
1.示例
1.創(chuàng)建文件hello.c
vim hello.c
- 在
hello.c
下如下面代碼,并保存贤斜。
#include <stdio.h>
main() {
printf("hello world\n");
}
- 編譯
hello.c
gcc hello.c
編譯成功后策吠,自動生成a.out
文件。
- 運行
a.out
./a.out
輸出
hello world
2. 說明
2.1 代碼說明
1.#include <stdio.h>
是一個文件瘩绒,在C語言中稱為頭文件猴抹,里面有些函數(shù)提供給我們直接使用。
-
main()
稱為主函數(shù)锁荔,是C語言中默認的入口函數(shù)蟀给,在默認情況下運行程序時系統(tǒng)會先調(diào)用程序中的main函數(shù)。一般情況下,一個完整的程序中主函數(shù)是必須的跋理。C語言的函數(shù)表示方法與數(shù)學函數(shù)表示方法相似择克,例如:
sin(x)
。 -
main
后面的()
表示函數(shù)的參數(shù)列表前普。這里使用了空的參數(shù)列表()
肚邢。 -
main()
后面的{}
被稱為函數(shù)體,定義函數(shù)的主要操作汁政。 -
printf("hello world\n");
是一條C語言執(zhí)行命令道偷,被稱為語句,每條語句都以英文分號;
結束记劈。主要作用是在屏幕上打印hello world
勺鸦。其中printf()
是打印函數(shù),它定義在頭文件stdio.h
中目木。語句相當于漢語中的一句話换途,只不過在漢語中是以句號
。
結尾刽射。 - 使用雙引號
"
包裹的一段文字军拟,被稱為字符串,這里是在終端需要輸出的內(nèi)容誓禁。 -
\n
是一個換行符懈息,主要是在打印hello world
后自動換行。
試一試
- 把字符串中的
Hello world
改成你好世界
會有什么效果摹恰? - 在字符串中刪除
\n
或者多添加幾個\n
辫继,會有什么效果? - 如果沒有
#include <stdio.h>
俗慈,編譯會得到什么錯誤姑宽? - 如果沒有
main()
函數(shù),編譯會得到什么錯誤闺阱?
在C語言中炮车,除去必要的空格外,空行和空格往往不是必須的酣溃,它的作用是為了提高代碼的可讀性瘦穆。例如寫成這樣也是可以的。
#include <stdio.h> main(){printf("hello world\n");}
好的代碼風格是縮進整齊赊豌,每個語句一行难审,適當留空行。
2.2 編譯執(zhí)行說明
在Hello World示例中亿絮,有兩個文件hello.c
和a.out
。hello.c
被稱作源文件(或者源程序/代碼),a.out
被稱為可執(zhí)行文件(或者程序)派昧。二者有如下區(qū)別:
上面使用gcc
命令就是把人便于讀寫的源文件翻譯成機器可以理解可執(zhí)行文件黔姜,這個過程被稱作編譯,所以蒂萎,gcc
經(jīng)常被稱作編譯器秆吵。
主要術語
小歷史
- Hello World梗的由來
1978年,在K&R(Brain Kernighan和Dennis Ritchie)合作撰寫的C語言圣經(jīng)《C程序設計語言》(The C Programming Language)中五慈,使用了"hello,world"
句式纳寂,作為開篇第一個程序。后來泻拦,各種編程語言各類教材都是以hello world做為開篇毙芜。
湯普遜創(chuàng)造出了名為Bon的程式語言。湯普遜花了一個月的時間開發(fā)了全新的操作系統(tǒng)争拐,UNiplexed Information and Computing System(UNICS)腋粥,可執(zhí)行于PDP-7機器之上,后來改稱為UNIX架曹。第一版的Unix就是基于B語言來開發(fā)的隘冲。Bon語言在進行系統(tǒng)編程時不夠強大,所以Thompson和Ritchie對其進行了改造绑雄,并與1971年共同發(fā)明了C語言展辞。1973年Thompson和Ritchie用C語言重寫了UNIX。安裝于PDP-11的機器之上万牺。他也是編程語言Go的共同作者罗珍。與丹尼斯·里奇同為1983年圖靈獎得主。
- C語言版本
C語言主要分為幾個版本:Old Style C杏愤、C89靡砌、C99和C11。其中珊楼,C89通殃、C99和C11是標準語言規(guī)范,現(xiàn)在廣泛使用的是C99厕宗。
K&R的《C程序設計語言》(The C Programming Language)是第一本關于C語言著作画舌,也是最經(jīng)典的一本C語言著作,早期版本使用早期的Old Style C編寫風格已慢,最新版本改用標準C89風格曲聂。在C89中,hello.c應該寫成:
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}
2. C語言特點及其運行環(huán)境
1.1 C語言特點
- 語言簡潔佑惠、緊湊朋腋,使用方便靈活齐疙;
- 運算符豐富;
- 數(shù)據(jù)類型豐富旭咽,具有現(xiàn)代語言的各種數(shù)據(jù)結構贞奋;
- 具有結構化的控制語句;
- 語法限制不太嚴格穷绵,程序設計自由度大轿塔;
- C語言允許直接訪問物理地址,能進行位(bit)操作仲墨,能實現(xiàn)匯編語言的大部分功能勾缭,可以直接對硬件進行操作;
- 生成目標代碼質(zhì)量高目养,程序執(zhí)行效率高俩由;
- 用C語言編寫的程序可移植性好(與匯編語言比)。
這是跟C語言誕生之前的語言的比較混稽。
1.2 C語言運行環(huán)境
No. | IDE/編譯器 | OS |
---|---|---|
1 | Microsoft Visual C++/Microsoft Visual Studio | Windows |
2 | Code::Blocks | Linux |
3 | gcc | Windows/Linux |
4 | clang | Windows/Linux |
5 | eclipse | Windows/Linux |
2. C語言和面向?qū)ο笳Z言C++采驻、Java的比較
- C語言是經(jīng)典的面向過程的編程語言,編程入門一般都學C語言以了解編程以及鍛煉邏輯思維能力匈勋,在一些跟硬件比較緊密的編程中也經(jīng)常用到礼旅。
- C++是在C語言的基礎上加入了面向?qū)ο蟮母拍睿蔀榛旌闲兔嫦驅(qū)ο笳Z言洽洁,功能強大痘系,但難度也大。
- Java是在C++的基礎上進行改進的饿自,摒棄了一些C++的不足之處汰翠,語法跟C++很像,它是運行在Java虛擬機上昭雌,所以可以跨平臺复唤,一處編譯,到處執(zhí)行烛卧。
3. 注釋
在代碼中有些不用于執(zhí)行佛纫,僅僅作為代碼說明的文本,稱為注釋总放。
在C語言中呈宇,使用/*
作為注釋的開始,*/
作為注釋的結束局雄。例如
/* 這是注釋 */
也可以寫作多行
/* 這
是
注
釋
*/
注釋主要提高代碼可讀性甥啄,常用來說明代碼功能以及實現(xiàn)邏輯。
上面的注釋稱為多行注釋炬搭。在C99中蜈漓,支持單行注釋穆桂,只需要//
作為注釋開頭,注釋只能對單行起作用迎变。