c語言章節11

本文目錄html

前面已經給你們介紹了iOS開發相關的一些基礎知識,好比學習iOS開發須要什麼準備iOS開發的前景等等。在《開篇》這講中說過:其實iOS開發就是開發iPhone\iPad上的軟件,而要想開發一款軟件,首先要學習程序設計語言。iOS開發須要學習的主要程序設計語言有:C語言、C++、Objective-C,其中C++、Objective-C都是以C語言爲基礎,從C語言衍生出來的。從這講開始,咱們就暫時拋開iOS相關的知識,沉下心來學習傳說中的C語言。正式學習以前,先提醒一句:學習一門語言的語法是比較枯燥的事,很像是在學習1+1等於幾,不可能說,學習C語言語法過程當中就能立刻作出一些好看的iPhone界面效果。你們要沉得住氣,所謂苦盡甘來,沒有語法的積累,如何能編寫出好看的界面呢?android

1、計算機常識

在學習C語言以前,先要了解一些計算機常識ios

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,以圖形界面的形式將數據展現在咱們眼前。編程

 

2、程序設計語言發展史

咱們能夠利用程序設計語言來編寫程序,再將編好的程序運行到計算機上,計算機就可以按照程序中所說的去作。從計算機誕生至今,程序設計語言大體經歷了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> 注意

用高級語言編寫的程序不能直接被計算機識別,須要經編譯器翻譯成二進制指令後,才能運行到計算機上

 

3、C語言簡史

  • C語言於1972年發明,首次使用是用於重寫UINX操做系統(UNIX之前主要是用匯編語言寫的,它奠基了操做系統的基礎)
  • 隨着UNIX操做系統的成功,C語言也獲得了大幅度地推廣,被前後使用到大、中、小、微型主機上,至今仍是世界上最流行、使用最普遍的高級程序設計語言之一
  • C語言是一門面向過程的語言,非面向對象的語言。(究竟什麼是面向過程、面向對象,暫時不用去理解,只須要知道C語言是面向過程就Ok了)

下面是2013年3月份的編程語言熱門排行榜

從C語言誕生至今,它的熱度一點也沒減過,前兩名基本上都是Java和C

 

4、C語言的特色

1.豐富的運算符

計算機的基本功能就是計算,所以一門程序設計語言的計算能力是很是重要的。C語言提供了34種運算符,計算類型極其豐富,其中包括了最基本的加減乘除運算。

 

2.豐富的數據類型

  • C語言的生命力之因此如何強大,很大一部分是由於它擁有豐富的數據類型。
  • 正由於C語言數據類型豐富,運算能力極強,所以不少數據庫都是用C語言編寫的,好比DB二、Oracle等。

 

3.能夠直接操做硬件 

跟彙編語言同樣,C語言能夠直接操做硬件,容許直接對位、字節、地址進行操做(位、字節、地址是計算機最基本的工做單元),能夠說幾乎沒有C語言作不了的事情。

 

4.高效率的目標代碼

目標代碼,就是經編譯器翻譯後的二進制代碼。C語言的目標代碼執行效率很是高。

 

5.可移植性好

在一個環境上用C語言編寫的程序,不改動或稍加改動,就可移植到另外一個徹底不一樣的環境中運行。

 

上面所說的都是C語言的優勢,它有個很是明顯的缺點:語法限制不嚴格。這樣就致使初學者對C語言語法不能理解得很透徹,並且在開發過程當中也會帶來不少容易忽略的問題。 

 

5、C語言的做用

  • 因爲C語言具備強大的數據處理能力,並且容許直接訪問內存地址,直接對硬件操做,所以它適於編寫系統軟件、圖形處理、單片機程序、嵌入式系統開發甚至是用於科研。
  • 頗有遊戲外掛都是用C語言寫的
  • 不少操做系統的底層都是用C語言寫的,好比android 

 

6、C語言的版本問題

從UNIX操做系統的成功後,C語言獲得了普遍地應用,從大型主機到小型微機,都有C語言活躍的身影,也衍生了不少個版本的C語言。長期以往,C語言將可能成爲一門有多個變種、鬆散的語言。一門正式的語言,確定要有個標準才行,否則就亂套了。爲了改變這種局面,1983年美國國家標準局(American National Standards Institute,簡稱ANSI)成立了一個委員會,開始制定C語言標準的工做。1989年C語言標準被批准,這個版本的C語言標準一般被稱爲ANSI C

相關文章
相關標籤/搜索