C語言入門

2022-02-06 12:46:47 字數 2920 閱讀 3338

前言

電腦程式是一組計算機能識別和執行的命令。

計算機語言經歷了三個發展階段:(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

3int main(void)4

預處理:用於處理將所有的#include標頭檔案以及巨集定義替換成其真正的內容,並處理所有的條件編譯指令。

# 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

# ./helloworld

結語通過深入分析c語言編譯過程,能加深對c語言編譯過程的預處理、編譯、彙編、鏈結的理解,同時,增加對c語言程式除錯時對問題的判斷和修改,有助於提高自己的c語言編碼能力。最後,每一次總結,總會有些感悟和理解,希望藉此激勵自己一點點進步。

參考文獻

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...