因爲項目要求,須要學習iOS移動端開發。iOS開發的核心語言是Objective-C,Objective-C是在C語言的基礎加了一層面向對象的語法。爲了可以更好地掌握Objective-C,故先學習C語言,再在C語言的基礎上升華到Objective-C。數據庫
1、初認C語言
C語言簡史
- C語言於1972年發明,首次使用是用於重寫UINX操做系統(UNIX之前是用匯編寫的);
- 隨着UNIX操做系統的成功,C語言也獲得了大幅度地推廣,至今仍是世界上最流行、使用最普遍的高級程序設計語言之一;
- C語言是一門面向過程的語言,非面向對象的語言。
C語言的優缺點
- 優勢:C語言有着豐富的數據類型和運算符,容許直接訪問物理地址,對硬件進行操做;與彙編語言相比,C語言可讀性好,易於調試、修改和移植;
- 缺點:由於C語言是面向過程的,就是先分析出解決問題所須要的步驟,而後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用函數就能夠了,所以它的數據封裝性差、安全性低(面嚮對象語言的特性之一就是數據的封裝性);語法限制不嚴格,對變量的類型約束不嚴格,對數組下標不作檢查等。
C語言能作什麼
- 因爲C語言具備豐富的數據類型,所以它適用於編寫數據庫軟件(如Oracle、DB2)等;
- 因爲C語言具備強大的數據處理能力,並且容許直接訪問物理地址,直接對硬件操做,所以它適於編寫系統軟件、圖形處理、單片機程序、嵌入式系統開發等;
- 不少操做系統的底層是用C語言寫的,如Android、Linux,及後來用C語言重寫的Unix等。
2、C程序代碼分析
1.#include <stdio.h>
- #include 是C語言的預處理指令之一,所謂預處理,就是在編譯以前作的處理,預處理指令通常以 # 開頭;
- #include 指令後面會跟着一個文件名,預處理器發現 #include 指令後,就會根據文件名去查找文件,並把這個文件的內容包含到當前文件中。被包含文件中的文本將替換源文件中的 #include 指令,就像你把被包含文件中的所有內容拷貝到這個 #include 指令所在的位置同樣;
- 若是被包含的文件拓展名爲.h,咱們稱之爲"頭文件"(Header File),頭文件能夠用來聲明函數("函數"就是面向對象中的"方法"),要想使用這些函數,就必須先用 #include 指令包含函數所在的頭文件;
- #include 指令不只僅限於.h頭文件,能夠包含任何編譯器能識別的C/C++代碼文件,包括.c,.hpp,.cpp等,甚至.txt,.abc等等均可以;
- 要注意的是,爲何stdio.h用尖括號<>,而my.txt用雙引號"" ?這個很好區別,若是是系統自帶的文件,最好用<>;若是是開發人員本身建立的文件,最好用""。
2.main函數
- 一個C程序有且僅有一個main函數,它是整個C程序的入口;
- main函數的返回值爲int類型,接收2個參數,其實能夠不寫參數;
- main函數也能夠不寫返回值類型,但並不表明函數沒有返回值,而是表示返回值類型爲int類型,void才表明函數沒有返回值,這是因爲C語言的語法限制不嚴格。
3.stdio.h
stdio.h是C語言函數庫中的一個頭文件,裏面定義了一些標準輸入輸出函數。數組
2、開發和運行C程序的步驟
步驟圖以下:安全
1.編寫程序
C語言源文件的擴展名爲".c",源文件以ASCII碼形式存儲,不能直接被計算機執行,由於計算機只能識別二進制指令,也就是0和1。函數
2.編譯(VC環境下)
- 把C的源程序翻譯成計算機能夠識別的二進制形式的目標代碼文件,這個過程稱爲編譯,由C的編譯器完成;
- 在編譯的同時,還對源程序的語法等進行檢查。若出現語法錯誤,則編譯失敗。若是編譯成功則生成目標文件,目標文件名跟源程序文件名同樣,擴展名爲".obj"。好比,mj.c編譯後生成目標文件mj.obj;
- 每一個源文件是單獨進行編譯的,假如一個項目中有多個.c源文件,編譯成功會生成多個對應的.obj目標。通常狀況下,目標文件之間是有關聯的,好比 a.obj 可能會調用 b.obj 中定義的一個函數,所以它們都不可以單獨被計算機執行,並且目標文件中並不包含程序運行所須要的庫函數等。
3.連接(VC環境下)
4.運行
- * 若是是在Windows環境下,直接雙擊".exe"文件便可運行C語言程序。
5.總結
- 1.在編譯前先執行#include指令,拷貝stdio.h的內容到源程序中;
- 2.編譯源程序,生成目標文件;
- 3.連接C語言函數庫,生成可執行文件;
- 4.運行可執行文件,在屏幕上輸出"Hello, World!"。
3、C語言中的函數
(1)函數的分類
C語言的函數大概能夠分爲3類:學習
- 1.主函數,也就是main函數。每一個程序中只能有一個、也必須有一個主函數。不管主函數寫在什麼位置,C程序老是從主函數開始執行
- 2.開發人員自定義的函數,無關緊要,數目不限
- 3.C語言提供的庫函數,例如stdio.h中的輸出函數printf()和輸入函數scanf()
(2)函數的聲明和定義
- 1.在標準C語言中,函數的定義順序是有講究的,默認狀況下,只有後面定義的函數才能夠調用前面定義過的函數。
- 2.若是想把其餘函數的定義寫在main函數後面,並且main函數能正常調用這些函數,那就必須在main函數前面做一下函數的聲明。
- 3.在大型的C程序中,爲了分模塊進行開發,通常會將函數的聲明和定義(即實現)分別放在2個文件中,函數聲明放在.h頭文件中,函數定義放在.c源文件中。
(3)函數的形參和實參
在定義函數時,函數名後面的()中定義的變量稱爲形式參數(形參);在調用函數時傳入的值稱爲實際參數(實參)。操作系統