前言
電腦程式是一組計算機能識別和執行的命令。
計算機語言經歷了三個發展階段:(1)機器語言;(2)符號語言;(3)高階語言。
計算機直接識別和接受二進位制**稱為機器指令。
機器語言是計算機最原始的語言,直接使用二進位制(0和1)編寫的語言,是機器指令的集合。
符號語言是用人類容易記憶的語言和符號來表示一組0和1的**。
高階語言不依賴於具體機器,用它寫出的程式對計算機都使用,語言功能很強。
高階語言經歷了不同的發展階段:(1)非結構化的語言。(2)結構化語言。(3)物件導向的語言。
c語言簡介
最初的c語言只是為了描述和實現unix作業系統提供一種工作語言而設計的。
c語言主要特點是(1)語言簡潔、緊湊,使用方便、靈活;2)運算子豐富;(3)資料型別豐富;(4)具有結構化的控制語句;(5)語法限制不太嚴格、程式設計自由度大;(6)c語言允許直接訪問實體地址,能進行位操作,能實現組合語言的大部分功能,可以直接對硬體進行操作(7)c語言程式可移植性好;(8)生成目標**質量高,程式執行效率高。
乙個c語言程式的結構特點如下:
(1)乙個程式由乙個或多個源程式檔案組成。其中,乙個源程式檔案由預處理命令、全域性宣告、函式定義組成。
(2)函式是c程式的主要組成部分。函式是c程式的基本單位。
(3)乙個函式包括兩部分:函式首部和函式體。其中,函式體分為宣告部分和執行部分。
(4)程式總是從main函式開始執行。
(5)程式對計算機的操作是由函式中的c語句完成。
(6)每個資料宣告和語句的最後必須有乙個分號。
(7)程式應當包含注釋。
c語言程式編譯過程分為四個步驟:預處理(preprocessing)、編譯(compilation)、彙編(assemble)、鏈結(linking)。即如下圖
人生若只如初見,我們總是懷念第一次相見的感覺。正如學習c語言時所接觸的第乙個程式(萬能的hello world)。本文以linux下環境下,編輯源程式(helloword.c)如下:
1 #include2預處理:用於處理將所有的#include標頭檔案以及巨集定義替換成其真正的內容,並處理所有的條件編譯指令。3int main(void)4
# gcc -e helloworld.c -o helloworld.i編譯:把高階語言翻譯成機器語言的過程,即經過預處理後的程式轉換成特定的彙編**的過程。編譯的過程實質上對預處理的程式做了:(1)詞法分析;(2)語法分析;(3)語義分析;(4)優化後生成響應的彙編**。
# gcc -s helloworld.c -o helloworld.s此處為該彙編**如下:
1 .file "彙編:把彙編**轉換成機器語言,並產生目標檔案(二進位制格式)。helloworld.c"2
.text
3.section .rodata
4.lc0:
5 .string
"hello world!"6
.text
7.globl main
8.type main, @function
9main:
10.lfb0:
11.cfi_startproc
12 pushq %rbp
13 .cfi_def_cfa_offset 16
14 .cfi_offset 6, -16
15 movq %rsp, %rbp
16 .cfi_def_cfa_register 6
17 leaq .lc0(%rip), %rdi
18call puts@plt
19 movl $0, %eax
20 popq %rbp
21 .cfi_def_cfa 7, 8
22ret
23.cfi_endproc
24.lfe0:
25 .size main, .-main
26 .ident "
gcc: (ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
"27 .section .note.gnu-stack,"",@progbits
# gcc -c helloworld.s -o helloworld.o
# gcc helloworld.o -o helloworld執行:直接執行可執行程式,如圖下:
綜上所述,c語言編譯過程經過預處理、編譯、彙編、鏈結、執行,即可。很多時候,若原始檔很多,則可以忽略一些中間過程,直接生成可執行檔案,如下:
# gcc helloworld.c -o helloworld結語通過深入分析c語言編譯過程,能加深對c語言編譯過程的預處理、編譯、彙編、鏈結的理解,同時,增加對c語言程式除錯時對問題的判斷和修改,有助於提高自己的c語言編碼能力。最後,每一次總結,總會有些感悟和理解,希望藉此激勵自己一點點進步。# ./helloworld
參考文獻
1.
c語言入門
譚浩強版本的c語言教程學了兩個月什麼都沒學會,所以轉到c語言設計k r版本學習。2012年4月29日 15 39 14 1.入門 編乙個程式 請列印出下列內容 hello,world 程式源 如下 this is a first programe 收穫 1.乙個c語言程式,無論其大小如何,都是由函式...
C語言入門
include include include define max num 20 int add int,int int main int add int a,int b include 標準io庫 include include 字串操作函式庫 define max num 如上為預處理指令,由...
c語言入門
1.先宣告 定義變數,再給它賦值。int 變數 scanf d 變數 printf d 變數 2.scanf printf 整int d d 實float f f double d f 字元char c c 3.c語言的識別符號由 字母 數字 下劃線組成。4.常用資料型別 int 整型 d char...