關於自定義函式和巨集定義

2021-08-21 18:37:52 字數 801 閱讀 3216

一、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 如...