軟考知識點 函式呼叫時的引數傳遞方式 傳值與傳址

2021-08-20 02:11:47 字數 737 閱讀 3449

在定義函式時函式括號中的變數名稱為形式引數,簡稱形參或虛擬引數;

在主調函式中呼叫乙個函式時,該括號中的引數名稱為實際引數,簡稱實參,實參可以是常量、變數或表示式。

1、 c語言中實參和形參之間的資料傳遞是單向的「值傳遞」,單向傳遞,只能由實參傳給形參,反之不能。

2、 被呼叫函式的形參只有函式被呼叫時才會臨時分配儲存單元,一旦呼叫結束占用的記憶體便會被釋放。

3、 傳值方式傳遞的是實參的乙個拷貝。

主調函式向呼叫函式傳遞引數實際上只是將實參的拷貝(即臨時副本)傳遞給了被呼叫函式,並不是實參本身,這樣被呼叫函式不能直接修改主調函式中變數的值,而只能修改其私有的臨時變數副本的值。

傳遞給呼叫函式的都是實參的乙個拷貝,直接對拷貝進行操作不會影響實參

1、 表示式、常量

2、 變數、陣列元素

這種資訊傳遞是單方向的,形參不能將值傳回給實參。

位址傳遞與按值傳遞的不同在於,它把實參的儲存位址傳送給對應的形參,從而使得形參指標和實參指標指向同乙個位址。因此,被呼叫函式中對形參指標所指向的位址中內容的任何改變都會影響到實參。   

引用傳遞方式是在函式定義時在形參前面加上引用運算子「&」

1、 必須是變數、陣列名或陣列元素

被調回函式中對形式引數的修改實際上就是對實際引數的修改,可以實現資料的雙向傳遞。

ARM函式呼叫時引數傳遞規則

之前在學習如何在c語言中嵌入彙編時有了解到c語言之前的引數呼叫是使用暫存器 r0傳遞第乙個引數,r1傳遞到第二個.一直到r3傳遞第四個引數.但是 實際上有時可能傳遞的引數非常多,超過8個,或是引數中有浮點數之類,引數也會超過4個暫存器,對於超出的部份並不使用r4,而是使用堆疊的方式.對於arm體系來...

C C 函式呼叫時的引數傳遞小結

眾所周知 void method object arg 和void method object arg 的區別,前者 在函式呼叫的時候,將實參進行了乙個複製,複製了乙個映象給了method函式,不管在method中如何改變arg的值,之前的實參一直都沒有變化,自始自終都固定不變。而後者 則是將實參本...

函式呼叫時的三種引數傳遞方式

size medium 今天學習 從新手到高手c 全部精華教程 知道了函式呼叫的三種引數傳遞方式 第一種 傳值 size include using namespace std void swap int a,int b int main size medium 程式結果 img 與按值傳遞相比,按...