天天看點

ios-(2)第一個C語言程式(了解編譯、連接配接、運作)

一、開發工具的選擇

  1、

可以用來寫代碼的工具:記事本、ultraedit、vim、xcode等。

  2、

選擇xcode的原因:蘋果公司官方提供的開發利器、簡化開發的工程、有高亮顯示功能。

  3、

使用xcode建立一個c程式的源代碼檔案(擴充名為.c或者.c)

    # 開發xcode

    # 建立檔案

    # 選擇檔案類型 .c

二、代碼編寫

  1、程式結構

    * c程式的結構:由函數組成  

      #

任何一個c語言程式都市有一個或者多個程式段(小程式)構成的,每個程式段都有自己的功能,我們一般稱這些程式段為“函數”。是以,你可以說c語言程式是由函數構成的。

    * 函數的概念

      # 函數名:

一個程式中由無數個函數組成,每個函數都有自己的名稱。

調用(執行)函數:根據函數名酒可以調用對應的函數,執行相應的功能。

    * c程式的入口

c程式的入口是一個名字叫做main的函數,簡稱main函數。

不管整個程式中又多少個函數,都是先執行main函數。

  2、程式設計程式

    *

編寫main函數(大括号{}中得内容是函數體)

    #include<stdio.h>

    int main()

    {

      printf("這是函數體"); // 輸出字元串

調用系統函數

      return 0;

    }  

三、編譯

  1、什麼是編譯:将c源程式翻譯成計算能識别的0和1

  2、使用什麼編譯器:xcode3是用gcc,xcode4使用llvm編譯器(前端clang)

  3、如果使用clang編譯程式?

    * 在終端中輸入:cc -c

檔案名.c。(cd進入目前目錄下)

編譯成功,會生成.o目标檔案。

  4、編譯器的錯誤和警告功能

如果嗲嗎有文法問題,編譯器會直接報錯,并指出錯誤的個數和具體的行号。

隻要有1個錯誤,程式就不能編譯成功,也不好生成.o檔案。

警告資訊隻是編譯的一些建議,并不影響編譯通過。

四、連接配接

  1、連接配接的作用:将.o檔案和c語言函數庫組合在一起,生成可執行檔案

  2、由連接配接器完成,clang編譯器裡面已經包含了連接配接指令。

    * 終端輸入:cc

檔案.o。

連接配接成功,會生成a.out可執行檔案。

五、運作

  1、兩種方式運作

直接輕按兩下打開a.out檔案。

終端中使用./a.out指令。

  2、修改檔案内容之後,一定要重新編譯、連接配接、再運作。

  3、\n的作用:回車換行。

六、其他clang指令

  1、劉改可執行檔案名稱:cc  xx.o   -o

  檔案名

  2、一起編譯、連接配接:cc  

xxx.c

七、初學者常見錯誤

  1、不寫分号、用了中文分号

  2、字元串少了雙引号、或者用了單引号,雙引号裡面又又雙引号

  3、代碼沒有寫在main函數内部、return之前

  4、檔案擴充名不是.c

或者.c,比如.txt

  5、用絕對路徑編譯檔案,注意目标檔案生成的地方。

八、總結

  1、整個程式的運作過程

    * 編寫程式 -> 源代碼-> 編譯 ->

目标代碼 -> 連接配接(c語言函數庫)-> 可執行的機器代碼 -> 運作

  2、總結常見檔案的擴充名

.c是c語言源檔案,在編寫代碼的時候建立

.o是目标檔案,在編譯成功的時候産生。

.out是可執行檔案,在連接配接成功的時候産生。

  3、總結clang指令

    * 編譯:cc -c  

xx.c

    * 連接配接: cc

xxx.o

    * 編譯、連接配接:cc

    * 運作可執行檔案:

./a.out

    * 更改可執行檔案的名稱:cc xxx.o -o

xxx

  4、開發中會遇到哪些錯誤?如果解決?

文法錯誤,可以通過編譯器的報錯資訊解決

邏輯錯誤,需要内心調試程式

  5、學習建議

    * 學程式設計并不是學英文

    * 程式的可讀性(非常重要)

初學者不要過于尋根問底

九、例子

  1、用二種不同的代碼方式輸出下面圖案

    ************

    ****8888****

 

#include <stdio.h>

 int main()

{

printf("************\n****8888****\n************\n");

    return 0;

}

printf("************\n");

printf("****8888****\n");

繼續閱讀