------- android培訓、iOS培訓、雲計算培訓、Java培訓、期待與您交流! ----------
瞭解:
1、iOS開發,使用Mac平臺下的Xcode搭建C語言開發環境;
2、Windows環境下,下載微軟的Visual C++搭建C語言開發環境;
(一) 創建C程序(Mac平臺)
1、打開Xcode,新建Xcode項目;
2、選擇簡單的命令行項目(OS X ==>Application、選中命令行項目);
3、輸入項目信息(項目名:中文、英文均可,Type==> C);
4、選擇一個用來存放C程序代碼的文件夾;
5、運行程序(左上角運行按鈕 或 command + R組合鍵運行);
(二) 程序代碼分析:
1、打開項目中的main.c文件:(C 程序的源文件爲.c文件)
1> #include <stdio.h>
① #include 是C語言預處理指令之一,所謂預處理:就是在編譯之前做的處理,預處理指令一般以#開頭;
② #include 後面會跟一個文件名,預處理器發現#include 指令後,就會根據文件名去查找文件,並把這個文件的內容包含到當前文件中,被包含文件中的文本將替換源文件中的#include 指令,就像你把被包含文件中的全部內容拷貝到這個#include 指令所在位置一樣;
③ #include 指令不僅僅限於.h頭文件,它還可包含任何編譯器能識別的C/C++代碼文件,包括.C、.hpp、.cpp等,甚至.txt、.abc等都可以;
注意:若頭文件爲系統自帶文件,使用<>,若爲自己創建文件,則用"";
2>main函數:
① C中的函數即是面向對象中的方法;
② C語言是一門面向過程的語言,是以過程爲中心的編程思想,就是先分析出解決問題所需的步驟,然後用函數一步步實現,使用時一個個一次調用函數就可以了;
③ 一個C程序中一定會有且只有一個main函數,main函數是整個C程序的入口;
④ main函數的返回值爲int類型,接收2個參數,參數可省略不寫;
注意:
① main函數沒有寫返回值類型,並不代表函數沒有返回值,而是表示返回值類型爲int類型,只有void才表示無返回值;
② 由於C語言的語法限制不嚴格,可簡化main函數爲:(下圖所示),雖然它要求main函數返回int類型的值,但可不返回;
<pre name="code" class="objc">#include <stdio.h>
int main()
{
printf("Hello word");
}
3>stdio.h 頭文件:是C語言函數庫中的一個頭文件,裏面指定了一些輸入輸出函數;
(三) 開發和運行程序的步驟
1、編寫程序:C語言原文件擴展名爲".c",源文件以ASCII碼形式存儲,不能直接被計算機執行,因爲計算機僅能識別0和1;
2、編譯:(VC環境下)(編譯只會檢查有沒有語法錯誤,不會檢測有沒有main函數)
1> 把C的源程序翻譯成計算機可識別的二進制形式的目標代碼文件,這個過程叫“編譯”,由C的編譯器完成;
2> 在編譯同時,還對源程序進行語法檢查。若出現錯誤則編譯失敗,否則生成目標文件,且目標文件與源程序文件名一致,擴展名爲".obj";
3>每個源文件是單獨編譯的,若一個項目中有多個.c源文件,編譯成功會生成多個對應的.obj目標。一般情況下,目標文件間是有關聯的,如a.obj可能會調用b.obj中定義的函數,因此他們不能單獨被計算機執行,且目標文件中並不包含程序運行所需的庫函數等;
3、鏈接:(VC環境下)(鏈接只會檢查有沒有錯誤)
1> 將所有有關聯的obj目標文件以及系統提供C庫函數等組合在一起生成可執行文件的過程,稱爲“鏈接”;
2>鏈接生成的可執行文件的文件名跟源程序文件同名,擴展名爲“.exe”,計算機可直接執行;
4、運行:
1>若在Windows環境下,直接雙擊“.exe”文件即可運行C程序;
2> 若在Mac OS X環境下,用Xcode創建的命令行項目運行,Mac OS X系統是基於UNIX系統的,因此生成的可執行文件;
(四) 總結:
1、在編譯器編譯程序前先執行預處理指令#include指令,拷貝stdio.h的內容到源文件中;
2、編譯源程序(.c文件),生成目標文件;
1> Mac環境下:生成.o目標文件;
2> Windows環境下:生成.obj文件;
3、鏈接C語言函數庫,生成可執行文件;
1> Mac環境下:生成.out目標文件;
2> Windows環境下:生成.exe文件;
4、運行可執行文件,在屏幕上輸出內容;
5、若使用終端運行C程序
1> clang指令編譯鏈接執行程序)
① 編譯:cc -c one.c
② 鏈接:cc one.o
③ 編譯、鏈接:cc one.c
④ 運行當前路徑下的可執行文件:./a.out
⑤ 更改可執行文件名稱:cc two.c -o one
2> 常見錯誤:linker鏈接
① 語法錯誤:可通過編譯器報錯信息解決;
② 邏輯錯誤:需耐心調試程序;
6、多語言對比(輸出“哈哈”並換行):
C語言:
#include <stdio.h>
int main()
{
print(“哈哈\n”);
return 0;
}
Object-C語言:
#import <Foundation/Foundation.h>
int main()
{
NSLog(@“哈哈”);//自動換行
return 0;
}
Java語言:
class Test{
public static void main(String [] args){
System.out.println(“哈哈”);
}
}
PS:本章節介紹瞭如何編寫第一個C程序以及它的運行原理,接下來的章節中將探索C語言內部具體知識;