1.主函式
注意:main函式執行時,可以在命令列後加上引數
例題:用main函式實現對輸入的數排序
引申:atoi()函式:把數值型字串轉換成整數
面試題:
問主函式既然不會被其它函式呼叫,為什麼要返回1?
int main()
答:mian中,c標準認為0表示成功,返回非零值表示主函式執行過程中的異常情況。具體什麼數字代表什麼異常,可以由程式設計者自己定義。
預處理問題1:什麼是預編譯?何時需要預編譯?
答:預編譯又稱預處理,是整個編譯工作最先做的工作,處理所有#開頭的檔案。即把#include標頭檔案拷貝到原始檔中,把#define中的巨集引數替換,以及條件編譯#if等
何時需要編譯:
1、總是使用不經常改動的大型**體。
2、程式由多個模組組成,所有模組都使用一組標準的包含檔案和相同的編譯選項。在這種情況下,可以將所有包含檔案預編譯為乙個預編譯頭。
(1)標頭檔案
#include:在系統指定的/usr/include中查詢
#inclue"stdio.h" :先在當前目錄下尋找,找不到再去自己指定的目錄下(gcc時加上 -i),最後去系統預設的usr/include/
(2)巨集定義(可以使用#ifdef,#ifndef來進行邏輯判斷,還可以使用#undef來取消定義)
問題:#與##的作用?
答:#是將巨集引數轉化為字串,##是將兩個巨集引數鏈結
執行結果:5 9
巨集函式和普通函式的優缺點:
巨集函式的優點:執行效率高(不占用執行時間),節省空間(直接替換,不需傳值,不佔記憶體),但是無法除錯
普通函式的優點:編譯效率高(程式長度不變),有型別檢查(因為有資料型別)更安全
(3)條件編譯
問題:如何避免標頭檔案被重複包含?
答:例如:為避免標頭檔案my_head.h被重複包含,可在其中使用條件編譯:
#ifndef my_head_h
#define my_head_h
/其他語句/
C語言之預處理
預處理指令 在 編譯 0和1 之前執行的指令叫預處理指令。所有的預處理指令都是以 開頭。預處理的位置是隨便寫的 預處理指令的作用域 從編寫指令的那一行開始一直到檔案結尾 undef 巨集名 從這行 開始,巨集失效 巨集名一般用大寫 或者在巨集名前加 k 代表常量 變數名一般用小寫 一 巨集定義 格式...
C語言之預處理
預處理是c語言 也包括oc 的一部分,它們是一些特殊的命令.在編譯器對c程式 或者 oc程式 進行編譯之前,編譯器會對這些預處理命令進行處理,然後將這些處理的結構與源程式一起進行編譯.預處理命令有如下特徵.1 預處理命令必須以 號開頭 2 預處理通常位於程式的開頭部分 下面一起來看一下幾種使用情況 ...
c語言之預處理命令
c提供的預處理功能有 巨集定義檔案包含 條件編譯 為了與其她c語句區分,命令經常以符號 開頭。define 識別符號 字串 可以避免反覆輸入字串,後面不加 巨集定義在預設時的有效範圍是全部。也可以用 undef終止巨集定義區域。不含引數 巨集展開帶入程式 含引數 define s a,b a b i...