- C語言入門很輕松(微課超值版)
- 云尚科技編著
- 2534字
- 2022-07-29 14:43:35
2.1 C語言的運行特征
在計算機中,程序是被逐句執行的,在C語言程序中,即使再簡單的一段C語言程序,也會包含最基本的組成部分,如函數首部、函數體、輸出函數等,本節就來介紹C語言的運行特征。
2.1.1 簡單的C語言程序
C語言程序主要包括預處理器指令、函數、變量、語句&表達式、注釋等內容,下面通過幾個使用C語言編寫的實例,來了解一下C語言程序的主要組成部分。
【例2.1】編寫程序,實現在屏幕中輸出Hello World!(源代碼\ch02\2.1.txt)。


圖2-1 例2.1的程序運行結果
程序運行結果如圖2-1所示。
程序說明如下:
(1)#include:稱為“文件包含命令”,其作用是把系統目錄下的頭文件<stdio.h>包含到本程序中,成為程序的一部分,并告訴C語言編譯器在實際編譯之前要包含stdio.h文件。
C語言提供的頭文件中包含各種標準庫函數的函數原型,在程序中調用某個庫函數時,就必須將該函數原型所在的頭文件包含進來。本程序包含的頭文件是stdio.h(stdio是standard input&output(標準輸入/輸出)的縮寫),該文件中的函數主要用于處理數據流的標準輸入/輸出。
(2)main():主函數的名字,每一個C語言程序只允許有一個主函數;主函數之前的void表示此主函數是空類型,即執行此函數后不產生一個函數值。
(3)/*…*/:表示注釋語句,即程序中的說明文字,是不被C語言系統執行的語句。位于/*和*/之間的所有內容都屬于注釋語句,可以寫在一行之內,也可以寫在多行之內。
(4)printf():C語言系統庫函數,其函數原型在頭文件stdio.h中,該函數的功能是將其小括號中的內容輸出到顯示器上,其小括號中雙引號里的內容會被按原樣輸出,其中的“\n”是換行符。
(5)主函數中的內容必須放在函數體中,即主函數下方的一對花括號中。
(6)return():終止主函數,并返回值0。
☆大牛提醒☆
包含頭文件的命令盡量不要忽略,雖然有的時候不影響程序的運行,但希望學習者在開始學習的時候就能養成良好的編程書寫習慣。另外,主函數之前的void可以忽略不寫。
【例2.2】編寫程序,求10以內的偶數的和(源代碼\ch02\2.2.txt)。


圖2-2 例2.2的程序運行結果
程序運行結果如圖2-2所示。
程序說明如下:
(1)在主函數里定義了一個整型變量sum。
(2)語句“sum=2+4+6+8+10;”是將表達式“2+4+6+8+10”的計算結果賦給變量sum。
(3)語句“printf("sum=%d\n", sum);”是將變量sum的結構輸出到計算機屏幕上,其中,雙引號中的格式字符%d對應的是雙引號之后的變量sum的值。
☆大牛提醒☆
本程序中printf()的雙引號里出現了格式字符%d,其作用是輸出一個整數類型的值,輸出的對象是位于雙引號之后的整型變量sum。
【例2.3】編寫程序,求兩個整數中的最大值(源代碼\ch02\2.3.txt)。


圖2-3 例2.3的程序運行結果
程序運行結果如圖2-3所示。
程序說明如下:
(1)本程序中包含兩個函數,主調函數main()和被調函數max()。函數max()的作用是判斷x和y中的較大值。函數max()中的return語句將z的值返回給主調函數main(),返回值通過函數名max帶回到函數main()中調用max函數的位置。
(2)程序的第2行是對函數max()的聲明。
(3)程序的第8行調用函數max(),在調用時將實際參數a和b的值分別傳給函數max()中的形式參數x和y,經過執行函數max(),其返回值返回給函數main()中的變量c。
(4)程序的第9行輸出變量c的值。
(5)程序的第11行至第17行是函數max()的具體定義。
2.1.2 C語言程序的結構
在前面給出了一些C語言程序實例,雖然結構和功能簡單,但是都包含了C語言程序的基本組成部分,從中我們可以得出以下結論。
(1)C語言程序由函數構成。一個C語言程序必須包含一個主函數,或者一個主函數和若干個其他函數。因此,函數是C語言的基本單位,被調函數可以是系統函數,如函數printf(),也可以是用戶自定義編寫的函數,如函數max()。
(2)C語言程序的函數由兩部分組成,即函數首部和函數體。
①函數首部,即函數的第一行,包括函數類型、函數名稱、參數類型和參數名稱。函數名稱后面必須跟一對小括號,括號內寫明函數的參數類型和參數名稱,函數也可以沒有參數,如main()。例2.3中的函數max()的首部為:

②函數體,即函數首部下方花括號內的部分,若函數體有多個花括號,則以最外層的一對花括號包含的內容為函數體的范圍。
函數體一般包括兩個部分。
· 聲明部分。這部分要定義所要用到的變量和對所要調用的函數進行聲明,例2.3中的主函數對變量的定義語句“int a, b, c;”。
· 執行部分。這部分由若干條語句組成。
在某些情況下也可以沒有聲明部分,例2.1中,我們也可以既無聲明部分也無執行部分,語句如下:
void main( ) { }
這是一個空函數,什么也不執行。
(3)C語言程序總是從主函數開始執行,直至主函數中最后一條執行語句為止,與主函數的位置無關。
(4)C語言程序書寫格式自由,一行內可以寫若干條語句,一條語句也可以分寫在多行上。
(5)每條語句和數據聲明的最后都必須帶一個分號,即使是程序中的最后一條語句也要帶上分號。
通過以上內容的學習,我們可以了解到C語言程序的語法規則、基本表達式、控制結構語句的作用,并通過了解模塊化程序設計的思想和方法,逐步掌握C語言程序的設計方法。
2.1.3 C語言程序的執行
用C語言編寫的程序稱為源程序,由于計算機只能識別和執行由0和1組成的二進制指令,為了使計算機能夠執行編程語言的源程序,首先要將源程序翻譯成二進制的“目標程序”,這個過程被稱為“編譯”。然后還要將目標程序和系統提供的函數與其他目標程序連接起來,得到計算機可以執行的程序,這個過程被稱為“鏈接”。
1.編譯源程序
C語言源程序的擴展名為.c,必須將其編譯成目標程序,再將目標程序鏈接成可以執行程序,才能在計算機運行。C語言源程序的編譯過程如圖2-4所示,由詞法分析、語法分析和代碼生成三部分組成。

圖2-4 C語言源程序的編譯過程
2.鏈接目標程序
C語言源程序經過編譯后所生成的目標程序盡管是機器語言的形式,但卻不是計算機可以執行的方法,此時的目標程序還只是一些松散的機器語言,要想得到可執行的程序,就需要將它們鏈接起來。
編程語言的鏈接工作由鏈接器來完成,鏈接器的任務就是將目標程序鏈接成可執行的程序,這種可以執行的程序是一種可存儲在磁盤存儲器上的文件。
☆大牛提醒☆
(1)并不是每一個目標程序都可以鏈接成可執行程序。
(2)在應用系統中,只允許一個源程序中包含一個主函數。
C語言源程序一旦生成了可執行程序,就可以反復被加載執行,而不再需要重新編譯、鏈接;如果修改了源程序,也不會影響已生成的可執行程序,需要對修改后的源程序重新編譯和鏈接,生成一個新的可執行程序。
- Delphi程序設計基礎:教程、實驗、習題
- 軟件項目管理(第2版)
- Visual FoxPro程序設計教程
- 新一代通用視頻編碼H.266/VVC:原理、標準與實現
- Vue.js 3.x從入門到精通(視頻教學版)
- Web Development with Django Cookbook
- Windows Presentation Foundation Development Cookbook
- Learning Neo4j 3.x(Second Edition)
- Learning Network Forensics
- 算法訓練營:提高篇(全彩版)
- HTML5+CSS3 Web前端開發技術(第2版)
- .NET 4.5 Parallel Extensions Cookbook
- Building Business Websites with Squarespace 7(Second Edition)
- C語言從入門到精通
- 視窗軟件設計和開發自動化:可視化D++語言