C語言概述及如何在VS2019中進行C語言程式設計

2021-03-04 03:08:52 字數 4530 閱讀 2908

作為本書的開始,我們不涉及c語言的語法和使用細節,先來看一看這門語言的相關背景,以及其在電腦程式中舉足輕重的地位。然後,為給後面的學習作準備,來看看如何建立c語言的開發環境。最後,拋磚引玉,說說筆者自己的c語言學習經驗。

本節先來看一看c語言的相關背景介紹。在眾多的計算機語言之中,它到底處於乙個什麼樣的位置?相對於其他計算機語言而言,它有什麼優勢和弱點?

另外,c語言適合做些什麼樣的軟體開發?帶著這些問題開始本節的學習。

圖1.1是計算機語言發展過程的乙個簡單的示意圖,只展示了一些主流的計算機語言的出現時間和順序,不是很全,但是足以顯示c語言與其他語言的關係了。

圖1.1 計算機語言發展史(簡)

從圖1.1中可以看出,所有的高階語言都起於fortran,之後就有不同的分支了。c語言也是其中的乙個分支,主要起源於bcpl語言(basic ***bined pogramming language),是對bcpl語言的一種簡化。

c語言之所以被稱為c語言,是因為bcpl語言被稱為b語言,c語言不能再取bcpl的首字母了,因此,取bcpl的第二個字母c,c語言因此得名。

c語言誕生於20世紀70年代,之後不斷完善、標準化。目前流行的c語言編譯系統大多數是以ansi c(美國國家標準協會(ansi)對c語言發布的標準)為基礎進行開發的。但不同版本的c編譯系統所實現的語言功能和語法規則略有差別。

現在比較通用的是2023年,國際標準化組織iso(international ***anization for standards)接受的2023年的ansi c標準,並以它作為iso c90標準——iso/iec9899:1990。

任何一種計算機語言都有它的優勢和不足,c語言也是如此。不要以為c語言都那麼老了,是不是沒用了,也不要以為c語言是****,什麼問題都能解決好。

c語言的優點細數起來,估計手指加腳趾都不夠用,但是這些優點可以總結為一點,那就是「靈活」。c語言的靈活主要體現在同一件事情可以通過好幾種方式實現,並不會定死什麼問題非得用什麼方式來解決。c語言之所以靈活,是因為它有下面這些屬性,保證了它天生就是一種靈活的語言。

結構豐富多變:c語言提供了三種基本的程式設計結構,通過這三種程式設計結構,就能夠完成所有的計算機邏輯。而且每種結構中,又有略有差別的不同的形式,你可以選擇自己喜歡的任意形式來完成需要的功能。

提供了多種基本運算:c語言提供了30多種運算符號,分為15個運算優先順序,不僅可以完成基本的數**算,還可以完成類似於計算機底層操作的位運算。有的運算符號在不同情況下的含義和使用方式也是不同的,而且可以通過強制結合來改變運算子的優先順序。

豐富的資料型別:資料型別決定了一種語言可以用來操作什麼樣的資料。c語言的資料型別真可謂豐富,從基本的幾種資料型別,到複雜資料型別,再到可以自定義的資料型別。

從某種程度上來說,c語言可以用來操作任何型別的資料。

程式設計自由,語法限制不大:c語言**在書寫的時候,從書寫格式到**組織限制都不是很大,所以寫**的風格可謂百花齊放,什麼樣的都有。只要符合最基本的要求,無論你怎麼寫,都是對的。

只不過**風格不好,不利於閱讀和理解。

對於上面提到的c語言的各種優點,在沒有接觸c語言之前,可能大家還體會不到。不要緊,相信大家學完這本書之後,回過頭來看看這一部分內容,一定會有所感悟的。

乙個事物,往往最強的地方也就是它最弱的地方。c語言的弱點也正是由於它的「靈活」造成的。因為太靈活了,怎麼樣都行,對計算機的控制太過自由,稍不留意就會出現錯誤!

所以,能靈活運用c語言,也是一種能力啊。

由於c語言本身的靈活性,導致它可以很好地處理複雜和具有差異的環境。因此,它至少適合進行下面三類軟體的開發。

所謂多平台通用軟體,就是指這個軟體可以在很多系統上使用。例如,如果想讓你寫的同乙個程式很好地執行在dos、windows 98、windows xp、windows ce、linux、unix等多個作業系統上,c語言確實是個不錯的選擇。知道apache嗎?

它是乙個開源web伺服器工程,其中的http伺服器可以執行於很多平台,windows、linux和unix都是可以的,這個伺服器就是用c語言開發的。

由於c語言可以很自然地與組合語言結合,又比組合語言好用,能夠很靈活地控制計算機硬體,因此很適合開發作業系統。windows很老的版本都是用c語言寫的,之後改用c++了,不過c++是相容c語言的。linux和unix系列的作業系統核心幾乎都是用c語言寫的,而且很多執行在板子上的嵌入式作業系統基本都是用c語言結合彙編寫的。

如果你真想做個作業系統,c語言絕對可以勝任。

之所以說c語言適合進行複雜計算軟體的開發,是因為:(1)複雜計算軟體本身很單純,只需要計算機進行計算就可以了;(2)c語言本身有豐富的運算功能,完全可以實現複雜計算功能;(3)因為c語言是一種接近底層語言的高階語言,所以它寫出來的程式在計算機上的執行效率很高。所以,要想做乙個需要複雜而高效計算功能的軟體,選擇c語言絕對不會令你失望的。

如果你經常做科學計算,用過matlab軟體,它其中一部分也是用c語言寫的。

「工欲謀其事,必先利其器」。要想學好c語言,選擇乙個好的c語言開發環境是很有必要的,而且是首要任務。在本節中,來看看c語言的開發過程,教大家學習windows平台上主流的c語言開發工具visual studio的基本使用方法。

編輯器、編譯器和鏈結器是使用c語言進行開發所需要的三個最基本的工具,而且也是最小的工具集,缺一不可。

從圖1.2所示的乙個可以執行的程式的生成過程,就可以看出編輯器、編譯器和鏈結器在這條可執行程式「生成鏈」上所處的位置了。從鍵盤一句一句敲出**到乙個可以在作業系統上執行的程式,必須經過這三個工具的處理才可以。

接下來逐個看一看這三個程式的作用。

圖1.2 可執行程式的生成過程

編輯器的作用就是將我們在鍵盤上的敲擊轉換成寫有**的檔案,這個檔案被稱為程式原始檔,或者直接叫做原始檔。

這個編輯器在形式上很像是乙個記事本程式,可以在上面新增、刪除、插入字母或者文字,並且可以將這些字母和文字儲存到乙個檔案中。其實,記事本是可以作為c語言編輯器的,我們在記事本上編輯的字母和文字就是將要學習的c語言**。這些**儲存到乙個檔案中,供下次編輯或者直接交給編譯器去處理,這個檔案就是原始檔。

不過,記事本可以算是最簡單和最不專業的c語言編輯器了!一般而言,專業的c語言編輯器都有其他方便c語言**編輯的功能。例如,最基本的語法高亮功能,所謂語法高亮,就是程式中不同用途的字母或者文字會以不同的顏色顯示出來,讓你一看就知道正在寫的**是做什麼用的。

越高階、越專業的c語言編輯器,越能最大程度地方便你寫c語言**。

其實,只要能將鍵盤的輸入轉換成原始檔的就可以稱為編輯器。一般的編輯器也是可以編寫c語言**的,只不過,比起專業的c語言編輯器會顯得難用和不舒服一點。

編譯器的作用是將儲存著我們所寫**的原始檔,轉換成一種稱為目標檔案的二進位制檔案。原始檔是我們能看懂的,是給我們用的。而二進位制檔案是計算機能看懂的檔案,是給計算機用的。

計算機根據二進位制檔案中的內容決定該做什麼事情,不該做什麼事情。

在這個轉換過程中,編譯器先對原始檔中的內容進行掃瞄,根據c語言的語法要求,逐個檢查原始檔中出現的每乙個字母或者文字。

如果這些文字元合c語言的語法要求,那麼它就根據這些字母和文字的含義將其轉換成計算機可以識別的二進位制**,並將其按照一定的格式儲存在二進位制檔案中。如果某些地方的字母或者文字不符合c語言的語法要求,那麼編譯器將報告所有不符合的地方,不再生成二進位制檔案,只有改正所有不符合語法要求的地方,讓編譯器重新對改正的原始檔進行轉化,才可以生成二進位制檔案。

編譯器對原始檔的轉換過程在計算機中有個專業的名字,叫「編譯」。編譯器也因此得名,表示編譯的工具。

一般所寫的程式最終是要執行在某個作業系統上的。因此,即使是乙個很簡單的程式也需要作業系統來處理很多事情,才能使程式正常執行。作業系統往往會提供一些被稱為開發庫的二進位制檔案,編譯器產生的目標二進位制檔案只有和這些庫二進位制檔案結合才能生成乙個可執行程式,才能使我們寫的程式正常地執行於某個作業系統之上。

另外,有的時候我們可能會開發一些專業的或者功能很複雜的軟體,這類軟體要從頭做,往往很麻煩。這個時候,就得看看其他公司或者業界有沒有提供此類功能實現,可以買過來使用。往往買過來的也是一堆庫二進位制檔案,只有把這些庫二進位制檔案和編譯器產生的目標二進位制檔案結合起來才能產生需要的可執行程式。

鏈結器所做的工作就是將所有的二進位制檔案鏈結起來融合成乙個可執行程式,不管這些二進位制檔案是目標二進位制檔案還是庫二進位制檔案。鏈結器將二進位制檔案融合的這一過程,在計算機中也有乙個專業的名字——「鏈結」,鏈結器也因此得名,表示鏈結的工具。

按照前面介紹的可執行程式的生成過程,要想用c語言寫乙個可以真正執行於某個作業系統之上的程式,至少需要編輯器、編譯器和鏈結器三個開發工具。整合開發工具也是乙個工具,不過它的功能更強大,因為它整合(包含)了編輯器、編譯器、鏈結器和其他用於開發的工具。

先來直觀地感受一下,乙個真正的整合開發環境是什麼樣的。圖1.3所示就是乙個windows作業系統上的整合開發環境,windows上的其他整合開發環境,以及其他作業系統上的整合開發環境基本都長這個樣子。

圖1.3 整合開發環境

整合開發環境也是乙個程式,它是乙個用於開發的程式。圖1.3顯示的整合開發環境就是乙個標準的windows應用程式,有點像我們經常使用的office word。

乙個整合開發環境基本都是以視窗的形式展現在我們面前的,如圖1.3所示。在這個視窗中一般會包含三個部分:

選單欄、工具欄和子視窗。圖1.3中最上邊的「檔案」、「編輯」等一行就是選單欄,選單欄之下的一行圖示組成了工具欄,工具欄之下被分成一塊一塊的就是子視窗了。

C語言概述

1.1 c語言出現的歷史背景 一 c語言作用 1 寫系統軟體 系統軟體一般用組合語言編寫,但表現出缺點 依賴於硬體 可讀性和可移植性差。系統軟體若用高階語言編寫,也表現出缺點 不能對硬體進行操作,難以實現彙編評議的功能。能否找到一種既具有高階語言特性又具有低階語言特性的語言,集它們的優點於一身。c語...

第1章C語言概述

新疆農業大學 語言程式設計課程教案 一 教學目的和要求 了解c語言產生的歷史背景,c語言的特點及發展過程,c語言程式的組成,turbo c環境的基本操作執行乙個c程式的方法。二 講授內容提要 第1章c語言概述 1.1 c語言產生的歷史背景 1.2 c語言的特點 1.3 c程式的基本組成 1.4 如何...

C語言基礎知識點概述

總結 c程式的主要結構特點如下 所有的c程式都是由乙個或多個函式組成的程式模組構成的。在程式中,可以包含任意多個不同名的函式,但必須有且僅有乙個main 主函式。c程式總是從主函式main 開始執行的。c語言程式是由語句組成,使用 作為語句的中止符或分隔符。一行中可以有多個語句,一條語句也可以占用任...