首先我們來定義乙個函式,使其可以交換兩個整形變數的內容.
#include #include void swap(int x, int y)
int main()
程式執行結果如下
我們不是定義了乙個函式,要將num1與num2的值進行交換嗎?為什麼num1與num2的值沒有發生變化呢?這就涉及到了c語言中函式的引數問題.
函式的引數
實際引數(實參):實參是真實傳給函式的引數,實參可以是常量,變數,表示式,函式等.但無論實參是那種型別的量,在進行函式呼叫時,他們都必須要有確定的值,以便於將這些值傳送給形參.
形式引數
形式引數是指函式名後括號中的變數,因為形式引數只有在函式被呼叫的過程中才例項化(也就是分配記憶體單元),所以叫形式引數.形式引數當函式呼叫完成之後就自動銷毀了.因此形式函式只有在函式中有效.
在面的swap函式中的引數x,y都是形式引數,在main函式中傳給swap的num1,num2是實際引數.
我們可以來看一下上述swap(a,b)的等價**
int x = a;
int y = b;
int tmp = x;
x = y;
y = tmp;
我們可以理解為函式的形參是實參的乙份拷貝.
**修改如下
#include #include void swap(int* x,int* y)
int main()
傳值呼叫:
函式的形參與實參分別占有不同記憶體塊,對形參的修改不會影響實參.傳址呼叫:
傳址呼叫是把函式外部建立變數的記憶體位址傳遞給函式引數的一種呼叫函式的方式.這種傳參方式可以讓函式和函式外邊的變數建立起真正的聯絡,也就是函式內部可以直接操作函式外部的變數.
形式引數和實際引數的區別
形參 全稱為 形式引數 是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳遞的引數。實參 可以是常量 變數 表示式 函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。實參和形參的區別 空白...
函式中的形式引數和實際引數
執行結果 分析 c語言中實際引數和形式引數之間採用值傳遞的方式來傳遞資料。在被調函式中,使用的是實際引數的乙個拷貝資料。我們在swap函式中交換了a和b,那只是主函式x,y資料的乙個備份,不能對main函式中的x,y產生影響,就像我們修改了乙個影印件,不會對原件造成任何影響。形式引數和實際引數可以不...
c語言指標的形式引數
宣告陣列 char strings 3 形參 指標 char strings char strings 編譯器會把陣列表示法轉化成指標表示法,僅能用於形參 宣告陣列 char strings 3 4 形參 指向指標的指標 char strings 一般不用於形參 char strings 4 僅能用...