內聯函式與巨集的差別

2021-07-05 04:39:49 字數 555 閱讀 6859

c++程式語言

巨集是內聯**的原始實現。

#define square(x) x*x

這並不是以傳遞引數實現的,而是通過文字替代實現的--x是「引數」的符號標記。

在標準c中,傳遞引數主要有2種方式:1.按值傳遞;2.按指標傳遞

在c++中,新增了一種與指標傳遞非常類似的傳遞方式:按引用傳遞。

引用的特點:

1.必須在宣告的時候進行初始化

2.宣告一旦初始化就不能再對引用變數進行修改

3.引用變數並不是新增了乙個變數,而是對某個變數取了乙個唯一的別名,每個「人」既可以

通過該變數的正式名字找到這個變數,也可以通過這個特殊的別名找到它。

4.引用變數的就是為了更好地傳遞函式引數。

5.當引用變數作為引數時,在呼叫函式時,不能把表示式當作引數傳遞給函式

int  a(int& x)

int main(void)

主函式第三行中呼叫了函式a(),但是引數是乙個表示式,該呼叫是錯誤的。

巨集與內聯函式

函式作為一種抽象機制,對解決大型複雜問題起到了很大作用。但是,由於函式呼叫時需要開銷的,例如,函式呼叫時需要保護呼叫者的執行環境,進行引數傳遞,執行呼叫命令,為區域性變數分配空間以及執行返回指令等,因此函式會帶來程式執行效率的下降,特別是對一些小函式的頻繁呼叫。c 提供了兩種解決上述問題的辦法 巨集...

巨集與內聯函式

建議 1 使用const定義常量而不是 define 2 使用inline內聯函式而不是 define來定義小型函式 第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫 必須要將程式執行的順序轉移到函式所存放在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作...

巨集與內聯函式

第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現場,並按原來儲存位址繼續執行。因此,函式呼叫要有一定的時間和空...