1. gzyueqian
      13352868059

      如何學習C語言?學完C語言后能做什么

      更新時間: 2018-11-06 15:19:54來源: C++培訓瀏覽量:8895

          近年來,C語言不僅是計算機專業(yè)學生的必修課,也是許多非計算機專業(yè)學生所青睞的技術(shù)學科。它具有簡潔緊湊、靈活方便、適用范圍大、可移植等優(yōu)點,是應用為廣泛的一種程序設計語言。
          計算機語言概述

          計算機語言是用于人與計算機間通信的語言,為使計算機進行各種不同的工作,就需要有一種專門用來編寫計算機程序的字符、數(shù)字和語法規(guī)則,而這些規(guī)則構(gòu)成計算機的指令。計算機語言分機器語言、匯編語言和語言3種,下面將分別進行詳細講解。

          1.1.1機器語言
          計算機工作基于二進制,它只能識別和接受由1和0組成的指令,其中1表示通電,0表示斷電,這種計算機能直接識別和接受的二進制代碼稱為機器指令。機器指令的集合就是該計算機的機器語言,機器語言具有靈活、直接執(zhí)行和速度快等特點。不同型號的計算機其機器語言是不相通的,按照一種計算機的機器指令編制的程序,不能在另一種計算機上執(zhí)行。因此用機器語言編寫程序,編程人員要首先熟記所用計算機的全部指令代碼和代碼的涵義。而且,編寫出來的程序都是0和1的指令代碼,直觀性差,容易出錯。因此只有極少數(shù)的計算機專業(yè)人員會學習和使用機器語言,絕大多數(shù)的程序員不再學習機器語言。
          1.1.2匯編語言
          盡管機器語言對計算機來說很好懂也很好用,但是對于編程人員來說,記住0和1的組成的指令簡直就是煎熬,為了解決機器語言的難記憶問題,匯編語言誕生了,它用簡潔的符號串或字母來替代不易記憶的機器語言,而計算機識別不了符號串,這就需要一個將 這些符號翻譯成機器語言的程序,把這種程序稱為匯編程序。匯編程序里一條指令只能對應實際操作中的一個很細小的動作,例如自增、移動,所以匯編源程序一般比較繁長、易出錯,并且使用匯編語言編程需要有扎實的計算機知識,才能編出高質(zhì)量代碼。
          1.1.3語言
          絕大數(shù)編程者喜歡語言,它簡化了程序中的指令、略去了很多細節(jié),并且與計算機的硬件關(guān)系不大,更利于程序員編程。此外,語言經(jīng)歷了結(jié)構(gòu)化程序設計和面向?qū)ο蟪绦蛟O計,使得程序可讀性、可靠性、可維護性都增強。常見的語言包括VB、C、C++、Java、C#、Python等等。
          C語言的歷史與特征
          1.2.1C語言的起源
          在C語言誕生以前,系統(tǒng)軟件主要是用匯編語言編寫的,由于匯編語言程序依賴于計算機硬件,其可讀性和可移植性都極差,一般的語言又難以實現(xiàn)對計算機硬件的直接操作(這正是匯編語言的優(yōu)勢),于是人們迫切希望有一種兼有匯編語言和語言特性的新語言,C語言就在這種需求下應運而生。
          1.2.2C語言的發(fā)展
          C語言的發(fā)展頗為有趣。它的原型ALGOL 60語言。(也稱為A語言) 
          1963年,劍橋大學將ALGOL 60語言發(fā)展成為CPL(Combined Programming Language)語言。 
          1967年,劍橋大學的馬丁·理查茲(Matin Richards)對CPL語言進行了簡化,于是產(chǎn)生了BCPL語言。 
          1970年,美國貝爾實驗室的肯·湯普森(Ken Thompson)將BCPL進行了修改,并為它起了一個有趣的名字“B語言”,其含義是將CPL語言煮干,提煉出它的精華,并且他用B語言寫了個UNIX操作系統(tǒng)。 
          1973年,美國貝爾實驗室的丹尼斯·里奇(Dennis M.Ritchie)在B語言的基礎(chǔ)上設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,即C語言。 
          1978年,布賴恩?凱尼漢(Brian W.Kernighan)和丹尼斯·里奇(Dennis M.Ritchie)出版了名著《The C Programming Language》,從而使C語言成為目前世界上流傳廣泛的程序設計語言。
          早期的C語言主要是用于UNIX系統(tǒng),由于C語言的強大功能和各方面的優(yōu)點逐漸為人們認識。到了八十年代,C開始進入其它操作系統(tǒng),并很快在各類大、中、小和微型計算機上得到了廣泛的使用,成為當代的程序設計語言之一。
          1.2.3C語言標準
          隨著微型計算機的日益普及,出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標準,使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國國家標準學會(ANSI)于1989年為C語言制定了一套ANSI標準,即C語言標準ANSI X3.159-1989,被稱為C89。之后在1990年,國際標準化組織ISO也接受了同樣的標準ISO9899-1990,該標準被稱為C90。這兩個標準只有細微的差別,因此,一般而言C89和C90指的是同一個C語言標準。在ANSI標準化發(fā)布了C89標準以后,C語言的標準在一段相當?shù)臅r間內(nèi)都保持不變,直到1999年ANSI通過了C99標準,C99標準相對C89做了很多修改,增加了基本數(shù)據(jù)類型、關(guān)鍵字和一些系統(tǒng)函數(shù)等,這個版本就是通常提及的C99。但由于很多編譯器仍然沒有對C99提供完整的支持,因此本書將按照C89標準來進行講解,在適當時會補充C99標準的規(guī)定和用法。
          1.2.4C語言的特征
          C語言對操作系統(tǒng)和系統(tǒng)使用程序以及需要對硬件進行操作的場合,用C語言明顯優(yōu)于其它語言,許多大型應用軟件都是用C語言編寫的。它還具有繪圖能力強,并具備很強的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫它是數(shù)值計算的語言。主要特征如下:
          1.簡潔緊湊、靈活方便
          C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。
          2.運算符豐富
          C的運算符包含的范圍很廣泛,共有種34個運算符。C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。從而使C的運算類型極其豐富表達式類型多樣化,靈活使用各種運算符可以實現(xiàn)在其它語言中難以實現(xiàn)的運算。
          3.數(shù)據(jù)結(jié)構(gòu)豐富
          C的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復雜的數(shù)據(jù)類型的運算。并引入了指針概念,使程序效率更高。另外C語言具有強大的圖形功能,支持多種顯示器和驅(qū)動器。且計算功能、邏輯判斷功能強大。
          4.結(jié)構(gòu)式語言
          結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂谩⒕S護以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。
          5.程序設計自由
          一般的語言語法檢查比較嚴,能夠檢查出幾乎所有的語法錯誤。而C語言允許程序編寫者有較大的自由度。
          6.直接訪問物理地址
          C語言可直接訪問物理地址,可以直接對硬件進行操作,因此C語言既具有語言的功能,又具有低級語言的許多功能,能夠象匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機基本的工作單元,可以
          用來寫系統(tǒng)軟件。
          7.程序執(zhí)行效率高
          C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高,一般只比匯編程序生成的目標代碼效率低10~20%。
          8.可移植
          C語言有一個突出的優(yōu)點就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機型。
          主流開發(fā)環(huán)境
          較早期程序設計的各個階段都要用不同的軟件來進行處理,如先用字處理軟件編輯源程序,然后用鏈接程序進行函數(shù)、模塊連接,再用編譯程序進行編譯,開發(fā)者必須在幾種軟件間來回切換操作。   
          現(xiàn)在的編程開發(fā)軟件將編輯、編譯、調(diào)試等功能集成在一個桌面環(huán)境中,這就是集成開發(fā)環(huán)境,又稱IDE(Integrated Development EnvironMent),將它們集成在一起這樣就大大方便了用戶。
          IDE為用戶使用C、C++、Java和Delphi等現(xiàn)代編程語言提供了方便。不同的技術(shù)體系有不同的IDE。比如Visual Studio可以稱為C、C++、VB、C#等語言的集成開發(fā)環(huán)境,所以Visual Studio可以叫做IDE。同樣,Borland的JBuilder也是一個IDE,它是Java的IDE。Eclipse也是一個IDE,可以用于開發(fā)Java語言和C++語言。下面將介紹幾種主流的C語言開發(fā)環(huán)境。
          1.3.1Code::Bloocks
          Code::Blocks 是一個體積小、開放源碼、免費的跨平臺C/C++集成開發(fā)環(huán)境,它提供了大量的工程模板,支持插件,并且具有強大而靈活的配置功能,是目前主流的開發(fā)環(huán)境。
          1.3.2Microsoft Visual Studio
          Microsoft Visual Studio是美國微軟公司推出的集成開發(fā)環(huán)境。它包括整個軟件生命周期中所需要的大部分工具,如代碼管控工具、集成開發(fā)環(huán)境等,但軟件體積偏大,目前版本為Visual Studio 2015。
          1.3.3Eclipse
          Eclipse是用于Java語言開發(fā)的集成開發(fā)環(huán)境,現(xiàn)在Eclipse已經(jīng)可以用來開發(fā)C、C++、Python和PHP等眾多語言,此外,也可以安裝插件,比如CDT是Eclipse的插件,它使得Eclipse可以作為C/C++的集成開發(fā)環(huán)境。
          1.3.4Vim
          Vim是一個功能強大的文本編輯器,它是從Vi編輯器發(fā)展過來的,可以通過插件擴展功能來達到和集成開發(fā)環(huán)境相同的效果。因此,Vim有的時候也被程序員當做集成開發(fā)環(huán)境使用。
          1.3.5Microsoft Visual C++6.0
          Microsoft Visual C++ 6.0,簡稱VC6.0,是微軟于1998年推出的一款C++編譯器,集成了MFC 6.0,包含標準版(Standard Edition)、專業(yè)版(Professional Edition)與企業(yè)版(Enterprise Edition)[2]。發(fā)行至今一直被廣泛地用于大大小小的項目開發(fā)。本書假設您的開發(fā)環(huán)境為Microsoft Visual C++ 6.0。
          個C程序通過前面對C語言的介紹,相信大家已經(jīng)對C語言產(chǎn)生了濃厚的興趣,下面正式開啟C語言的編程之旅。為了讓初學者對學習C語言產(chǎn)生足夠的信心,個程序盡量簡短。
           1   #include
           2   int main()
           3   {
           4       printf("這是個C語言程序!n");
           5       return 0;
           6   }
          這是個C語言程序!
          例1-1中代碼實現(xiàn)了一個C程序,在屏幕上輸出“這是個C語言程序!”信息。下面對其中代碼逐行進行詳細地解釋。
          第1行:字符‘#’是預處理標志,用來對文件進行預處理操作。預處理標志表示該行代碼要處理,所以它要在編譯器編譯代碼之前運行。include是預處理指令。它后面跟著一對尖括號,表示將尖括號中的文件在這里讀入。stdio是standard input output的縮寫形式,即“標準輸入輸出”,stdio.h就是標準輸入輸出頭文件,這個頭文件中聲明了用于輸入或輸出的函數(shù)。由于此程序中用到了輸出函數(shù)printf(),因此需要添加輸入輸出頭文件。
          第2行:聲明了一個main函數(shù)(也稱主函數(shù)),其中int是函數(shù)的返回值類型,每個函數(shù)都需要注明其返回值類型,表示在函數(shù)結(jié)束后,要向操作系統(tǒng)返回的數(shù)值類型。“()”則表明是一個函數(shù)。main函數(shù)的本質(zhì)是“函數(shù)”,但它與普通函數(shù)有著本質(zhì)的區(qū)別,普通函數(shù)需要由其他函數(shù)調(diào)用或者激活,main函數(shù)則是在程序開始時自動執(zhí)行。每個C程序都有一個main函數(shù),它是程序的入口。在上面的C程序中,main函數(shù)實現(xiàn)了屏幕上輸出“這是個C語言程序!”的功能。
          第3行:左大括號“{”表示函數(shù)的開始。
          第4行:使用printf函數(shù)來輸出一行信息。printf是print format的縮寫,print是打印的意思,format是格式化的意思,printf則是格式化輸出或者按格式輸出。“()”則表明printf是一個函數(shù)名,其中放置的是main函數(shù)傳遞給printf函數(shù)的信息。如上面程序中的“這是個C語言程序!”這個信息叫做參數(shù),完成的名稱為函數(shù)的實際參數(shù)。printf函數(shù)接收到main函數(shù)傳遞給它的參數(shù),然后將雙引號之間的內(nèi)容按照一定的格式輸出到屏幕上。
          第5行:return關(guān)鍵字,表示返回,作用是從函數(shù)中返回,后面跟著要返回的值——0。由于該句被添加到main函數(shù)中,表示main函數(shù)向操作系統(tǒng)返回一個0值(普通函數(shù)在執(zhí)行完畢后,都會返回一個執(zhí)行結(jié)果,return
      將這個執(zhí)行結(jié)果返回給操作系統(tǒng))。操作系統(tǒng)通過返回值來了解程序退出的狀態(tài),一般用0表示正常,用1表示異常。如果返回值類型為void,return后面則不用跟返回值,直接寫return即可終止函數(shù)的運行。
          第6行:右大括號“}”表示函數(shù)的結(jié)束。
          在對main函數(shù)進行聲明時,可能會發(fā)現(xiàn)這樣的寫法:main(),它沒有為main函數(shù)注明返回值類型。
          在C 語言中,凡是未注明返回值類型的函數(shù),就會被編譯器作為返回整型值處理。這個寫法在C90標準中還是勉強允許的,但是到了C99標準就不予通過了,因此不要這樣寫main函數(shù)。
          另外,還可能會有這樣的寫法:void main()。
          void作為返回值類型時,則表示“無類型”,常用在對函數(shù)的參數(shù)類型、返回值、函數(shù)中的指針類型進行聲明。由于任何函數(shù)都必須注明返回值類型,void則表示main函數(shù)沒有返回值。有些編譯器允許這種寫法,有些則不允許,因此考慮到C語言的移植性,要盡量采用標準寫法:int   main()。
          C程序運行流程
          C語言并不能直接被計算機所理解,需要將C語言轉(zhuǎn)變成可執(zhí)行代碼,即二進制代碼。在C語言轉(zhuǎn)變成二進制可執(zhí)行代碼時,是以工程為單位的。而一個工程中往往會包含多個C文件。因此,需要將每個C文件都編譯成二進制代碼。此時,每個C文件所對應的二進制代碼是獨立的。由于工程是一個系統(tǒng),所以需要將所有的C文件二進制代碼鏈接到一起,形成一個工程的可執(zhí)行文件。一般程序的運行流程包括編輯、編譯、連接、運行四個環(huán)節(jié),運行C語言時也需經(jīng)過這四個環(huán)節(jié)。
          1.編輯
          編輯類似于文本編輯,將程序代碼輸入進去,可以修改,增加,刪除。
          2.編譯
          編譯是將C代碼轉(zhuǎn)換成CPU可執(zhí)行機器指令的過程,每個.c文件生成一個.obj文件。
          3.鏈接
          鏈接是把生成的(多個) .obj 文件及用到的庫文件(.lib)一起組合生成可執(zhí)行文件(.exe)。
          4.運行
          運行是指運行鏈接環(huán)節(jié)生成的可執(zhí)行文件,得到預期結(jié)果的過程。
          首先編寫好C程序,然后將每個.c文件生成一個.obj文件,再將生成的.obj 文件及用到的庫文件(.lib)一起組合生成可執(zhí)行文件(.exe),運行達到預期的結(jié)果。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲国产精品午夜不卡网站 | 亚洲va欧美va在线 | 亚洲专区自拍中文字幕 | 亚洲Av一综合AV一区 | 亚洲一区精品国产 | 亚州欧美中文字幕 |