一、計算機常識
在學習C語言之前,先要了解一些計算機常識
1.計算機只能識別0和1
- 大家都知道,計算機要通電才能工作,說白了,它跟電視、洗衣機一樣,都是電器。電器都有個共同的能力:懂得判斷通電還是斷電,通電就能工作,斷電就停止工作。因此,從根本上講,計算機只能識別電信號:高電平信號(通電)、低電平信號(斷電),它只知道某個開關是通電還是斷電。我們用1代表高電平,0代表低電平。
- 也就說,計算機只能識別0和1。
2.二進制
因為計算機只能識別0和1,因此計算機所能識別的指令和數據都是用二進制數(0和1)來表示的。所謂二進制,就是用0和1來表示所有的數。不過我們日常生活中最常用的是十進制,用0~9來表示所有的數
1> 二進制指令
給計算機灌輸一些指令,它就能執行相應的操作,而計算機只能識別由0和1組成的指令。在計算機發展初期,計算機的指令長度為16,即以16個二進制數(0或1)組成一條指令,例如,用1011011000000000這條指令,是讓計算機進行一次加法運算。因此,如果要想計算機執行一系列的操作,就必須編寫許多條由0和1組成的指令,可以想象的到,這個工作量是如此巨大。
2> 二進制數據
平時我們在計算機中存儲的一些數據,比如文檔、照片、視頻等,都是以0和1的形式存儲的。只不過計算機解析了這一大堆的0和1,以圖形界面的形式將數據展示在我們眼前。
二、程序設計語言發展史
我們可以利用程序設計語言來編寫程序,再將編好的程序運行到計算機上,計算機就能夠按照程序中所說的去做。從計算機誕生至今,程序設計語言大致經歷了3個發展階段:機器語言、匯編語言、高級語言。其中,C語言屬于高級語言。
1.機器語言
1>什么是機器語言
在計算器誕生初期,所有的計算機程序都是直接用計算機能識別的二進制指令來編寫的,也就是說所有的代碼里面只有0和1。這種程序設計語言就是“機器語言”。這些由0和1組成的二進制指令,又叫做“機器指令”
2> 優點
- 由于機器語言編寫出來的代碼是能被計算機直接識別的,因此機器語言是直接對硬件產生作用的,程序的執行效率非常高。
- 機器語言能直接 訪問 、 控制 計算機的各種 硬件 設備,如 磁盤 、 存儲器 、 CPU 、 I/O端口 等。
3> 缺點
- 用機器語言編寫程序,編程人員要首先熟記所用計算機的全部指令和指令的涵義,指令又多又難記。
- 編出的程序全是些0和1的指令代碼,可讀性差,還容易出錯。
- 由于機器語言是直接對硬件產生作用的,對硬件的依賴性很強,因此不同型號計算機的機器語言又不一樣。也就是說,如果2臺不同型號的機器想實現一樣的功能,需要編寫2套完全不同的代碼。
可以看出,機器語言很難掌握和推廣,現在除了計算機生產廠家的專業人員外,絕大多數的程序員已經不再去學習機器語言了。
2.匯編語言
1> 什么是匯編語言
- 由于機器語言的種種弊端,嚴重影響開發效率,后面就出現了匯編語言。匯編語言其實就是符號化的機器語言,它用一個符號(英文單詞、數字)來代表一條機器指令。比如,在機器語言中,用1011011000000000這條指令,是讓計算機進行一次加法運算;而在匯編語言中,用英文單詞“ADD”就可以表示加法運算。一個有意義的英文單詞,很明顯比一串又臭又長的二進制指令,直觀好記多了。
- 由于計算機只能識別0和1,用匯編語言編寫的代碼是不能被計算機所識別的,像剛才的“ADD”,計算機肯定不知道是什么意思。因此,用匯編語言編寫的代碼需要翻譯成二進制指令后,才能被計算機識別。這個翻譯的工作交給“編譯器”去做。
2> 優點
- 對比機器語言,匯編語言的代碼可讀性好
- 匯編語言能像機器語言一樣,可以直接訪問 、 控制 計算機的各種 硬件 設備,如 磁盤 、 存儲器 、 CPU 、 I/O端口 等 。使用匯編語言,可以訪問所有能夠被訪問的軟、硬件資源。
- 目標代碼簡短(目標代碼就是經編譯器翻譯過后的二進制代碼),占用內存少,執行速度快。( 計算機中所有程序的運行都是在 內存 中進行的,因此內存的性能對計算機的影響非常大。 其作用是用于暫時存放CPU中的運算數據,以及與 硬盤 等 外部存儲器 交換的數據。 只要計算機在運行中,CPU就會把需要運算的數據調到 內存 中進行運算,當運算完成后CPU再將結果傳送出來,內存的運行也決定了計算機的穩定運行。 )計算機的內存是有限的,因此一個應用程序運行時所占用的內存越少越好。
3> 缺點
- 匯編語言是面向機器的, 通常是為特定的計算機或系列計算機專門設計的。因此,不同的機器有不同的匯編語言語法和編譯器,代碼缺乏 可移植性,也就是說,一個程序只能在一種機器上運行,換到其他機器上就不能運行。
- 匯編語言的符號非常多、難記 ,即使是完成 簡單 的 功能也 需要大量的匯編語言代碼,很容易產生BUG ,難于調試
- 使用匯編語言必須對硬件非常了解,開發效率很低,周期長且單調
3.高級語言
由于匯編語言依賴于硬件,代碼可移植性差,符號又多又難記,于是人類就發明了非常接近自然語言的高級語言。后面要學習的C語言就是高級語言。
1> 優點
- 簡單、易用、易于理解,語法和結構類似于普通英文,且遠離對硬件的直接操作,使得一般人經過學習之后都可以編程,而不用太熟悉硬件知識
- 寫出來的程序更加簡潔。比如要計算2個數的和,在高級語言中可以寫得非常簡潔:d=a+b;。但是在機器語言和匯編語言中,就需要幾條甚至幾十條指令,而且不同機器還要編寫不同的指令代碼
- 用高級語言編寫的同一個程序還可以在不同的機器上運行,具有可移植性
2> 注意
用高級語言編寫的程序不能直接被計算機識別,需要經編譯器翻譯成二進制指令后,才能運行到計算機上
三、C語言簡史
- C語言于1972年發明,首次使用是用于重寫UINX操作系統(UNIX以前主要是用匯編語言寫的,它奠定了操作系統的基礎)
- 隨著UNIX操作系統的成功,C語言也得到了大幅度地推廣,被先后使用到大、中、小、微型主機上,至今還是世界上最流行、使用最廣泛的高級程序設計語言之一
- C語言是一門 面向過程 的語言,非面向對象的語言。(究竟什么是面向過程、面向對象,暫時不用去理解,只需要知道C語言是面向過程就Ok了)
下面是2013年3月份的編程語言熱門排行榜
從C語言誕生至今,它的熱度一點也沒減過,前兩名基本上都是Java和C
四、C語言的特點
1.豐富的運算符
計算機的基本功能就是計算,因此一門程序設計語言的計算能力是非常重要的。C語言提供了34種運算符,計算類型極其豐富,其中包括了最基本的加減乘除運算。
2.豐富的數據類型
- C語言的生命力 之所以 如何強大,很大一部分是因為它擁有豐富的數據類型。
- 正因為C語言數據類型豐富,運算能力極強,因此很多數據庫都是用C語言編寫的,比如DB2、Oracle等。
3.可以直接操作硬件
跟匯編語言一樣,C語言可以直接操作硬件,允許直接對位、字節、地址進行操作(位、字節、地址是計算機最基本的工作單元),可以說幾乎沒有C語言做不了的事情。
4.高效率的目標代碼
目標代碼,就是經編譯器翻譯后的二進制代碼。C語言的目標代碼執行效率非常高。
5.可移植性好
在一個環境上用C語言編寫的程序,不改動或稍加改動,就可移植到另一個完全不同的環境中運行。
上面所說的都是C語言的優點,它有個非常明顯的缺點:語法限制不嚴格。這樣就導致初學者對C語言語法不能理解得很透徹,而且在開發過程中也會帶來很多容易忽略的問題。
五、C語言的作用
- 由于C語言具有強大的數據處理能力,而且允許直接訪問內存地址,直接對硬件操作,因此它適于編寫系統軟件、圖形處理、單片機程序、嵌入式系統開發甚至是用于科研。
- 很有游戲外掛都是用C語言寫的
-
很多操作系統的底層都是用C語言寫的,比如android
六、C語言的版本問題
從UNIX操作系統的成功后,C語言得到了廣泛地應用,從大型主機到小型微機,都有C語言活躍的身影,也衍生了很多個版本的C語言。長期以往,C語言將可能成為一門有多個變種、松散的語言。一門正式的語言,肯定要有個標準才行,不然就亂套了。為了改變這種局面,1983年美國國家標準局(American National Standards Institute,簡稱ANSI)成立了一個委員會,開始制定C語言標準的工作。1989年C語言標準被批準,這個版本的C語言標準通常被稱為ANSI C
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
