一、開發工具的選擇
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;
}