iOS_02_第一個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 xxx.c

    * 運行可執行文件: ./a.out

    * 更改可執行文件的名稱:cc xxx.o -o xxx

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

    * 語法錯誤,可以通過編譯器的報錯信息解決

    * 邏輯錯誤,需要內心調試程序

  5、學習建議

    * 學編程並不是學英文

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

    * 初學者不要過於尋根問底

九、例子

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

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

    ****8888****

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

 

#include <stdio.h>

 int main()

{

 

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

 

    return 0;

 

}

#include <stdio.h>

 int main()

{

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

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

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

    return 0;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM