一、static:此定義型別有以下3種情況:
1、當修飾乙個全域性變數時,這個變數的作用域被改變了,只能在當前檔案中呼叫;
2、當修飾乙個區域性變數時,改變了變數的生命週期,直到程式結束才會被釋放。注:一般的呼叫函式中定義的區域性變數預設儲存在棧空間,而如果是被static修飾的區域性變數儲存在資料段內(靜態資料庫);
3、除了修飾變數,還可以修飾函式,被修飾的函式只可在當前檔案中被呼叫;
二、#define:定義方法如下:
1、首先巨集定義可定義巨集變數如:#define n 10 則在此程式中n即為已常量10;
2、巨集定義還可以定義巨集函式如:#define out printf("helloworld\n") 則在此程式中每出現out;的字樣則輸出helloworld並換行;若為#define p(s) printf("%s\n",s) 則在此程式中每出現類似於p("asdasd");的字樣則輸出此字串並換行;
3、巨集定義有乙個易錯知識點如下:
#define s(x) x*x
int a = 1, b = 2;
printf("%d\n",s(a + b));
此程式執行下來輸出值為5,而不是9;因為巨集定義只做簡單的替換即 s(a + b) = 1 + 2*1 + 2 = 5;
三、自定義函式與巨集定義的區別
1、巨集函式優點:節省空間(無需像自定義函式一樣給形參分配空間,因為無形參)
缺點:1、浪費時間;
2、沒有語法檢查,不安全;
普通函式優點:1、有語法檢查;
2、浪費空間;
巨集定義與自定義型別
define int ptr int 這是巨集定義,編譯預處理階段要進行巨集替換,int ptr a,b會變成 int a,b 所以b不是指標型別 typedef int int ptr 這是自定義型別,也就是把int ptr定義為 int型指標,編譯階段會把c,d都識別為指標 test.c檔案中包...
總結 巨集函式和自定義函式的區別
巨集函式和自定義函式的區別?自定義函式 includeint max int a,int b int main 巨集函式 include define max x,y x y x y int main c程式由源程式變為可執行檔案的三個階段是 預處理階段,由預處理器對程式文字中的巨集進行展開。編譯階...
自定義函式 Excel之自定義函式
在excel中,當系統函式不能滿足我們的需求時候,我們可以使用vba自定義函式,如抓取網頁資料,翻譯詞彙,手機號歸屬地查詢等。下面將介紹2個自定義函式,idymd函式 身份證年月日性別 通過身份證號,返回性別,出生年月日。語法 idymd id 引數 id,身份證號,預設身份證長度18位。vba 如...