c c 函式呼叫機制的理解

2022-07-16 12:45:10 字數 724 閱讀 7630

要想理解函式呼叫,首先必須理解函式。

函式的值一般由返回值和傳遞的引數構成。所以當函式建立的時候,會有一段記憶體用來儲存函式的引數和返回值。

在c中引數的傳遞只有值傳遞的形式,而在c++中則多了引用傳遞。

值傳遞的過程,是指在被傳遞的函式中,新建了一塊記憶體用來儲存被傳遞的引數。而引用傳遞,則沒有新建一塊記憶體,直接對原來引數的記憶體進行操作。從這一點上c++的函式的效能比c優越。

注意c中的指標傳遞實際上是值傳遞的一種方式,由於改變指標的位址,因而改變了原來的值,使得看起來像引用傳遞。

理解了引數的傳遞,下面來看看函式間的呼叫,函式的呼叫一般有3種形式。

a,同步呼叫。即在函式a中呼叫b函式,直到b執行完畢,a才接著執行剩下的任務。

顯然函式要完成同步呼叫,須進行如下操作:

1,儲存a當前的狀態。

2,傳遞引數,可以為void。

3,交出控制權。即交出操作cpu的權利。

4,等待b操作完畢,接受b的返回值,可為void。

5,接受控制權,恢復操作。

b,**。即在函式a中呼叫b函式,同時傳遞乙個a提供的函式指標,b反過來執行a傳遞的函式。

**常用於底層函式呼叫上層函式。比如,傳送自定義訊息給系統,系統反過來呼叫訊息所代表的函式。

也可以結合指標陣列統一介面,模擬多型。

c,非同步呼叫。即在函式a中呼叫b函式,利用**機制,當b執行完畢後返回乙個結果,通知給a。

用於實現多執行緒等操作。

C C 函式呼叫機制 3

c 函式呼叫機制 c 函式呼叫機制 主要通過堆疊呼叫來實現 棧是一種後進先出的資料結構 就像子彈夾一樣 先放進去的子彈在最底層 後放進去的在上層 在扣動扳機的時候 後面放進去的子彈先飛出去 c 的函式呼叫過程主要是要做好呼叫初始化和善後的處理過程 步驟 1.分配被呼叫函式所需的棧空間 的執行需要相應...

C C 學習 函式的呼叫

函式的巢狀呼叫這節,注重對 的理解 遞迴的呼叫 函式的巢狀呼叫示例一 include using namespace std intfa int a,int b intfb int x int main intfa int a,int b 實參a 5傳給形參a,實參b 10傳給形參b intfb i...

C C函式的呼叫規範

先看乙個 void myfun int i,int ii void main int ptr arr ptr 123 printf d t d n ptr,ptr int i 10 myfun i,i vs2008輸出 函式的呼叫規範 函式的呼叫規範,也稱為呼叫約定 calling conventi...