函式呼叫引數為指標時,實參跟形參的問題

2021-07-14 08:05:08 字數 553 閱讀 7518

#include

void change(int *p)

int main()

執行結果:

0x7fffdb8192a4

0x7fffdb8192a4

0x7fffdb81928c 5

0x7fffdb8192a4

可以看出,實參跟形參是兩個不同的指標,只不過進入函式時,實參跟形參都指向main函式中的val位址,

當改變形參指向的變數的值時,*p = val; main函式中的val被改變;

但是改變形參的指向位址時,p = &val; 只是改變了形參的指向,並沒有改變實參的指向;

當加上const之後:

void change(const int *p)

執行結果:

0x7fff85402a94

0x7fff85402a7c 4

0x7fff85402a94

可以看出加上const之後,不能改變形參所指向的變數的值,但是可以改變形參的指向;

其實加上const就是說實參所指向的變數的值是唯讀的,形參不能改變;

函式引數 形參和實參的區別

實參 argument 全稱為 實際引數 是在呼叫時傳遞給函式的引數.實參可以是常量 變數 表示式 函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。形參 parameter 全稱為 形式引數 由於它不是實...

函式 呼叫指標交換函式(形參與實參)

譚浩強老師的書,很詳細,但是個人感覺很冗餘,就比如乙個指標引用陣列就窮舉了一遍實參形參的情況,像這些東西都能用一句 指標與陣列首位址等價 推出來的。這樣冗雜的內容別說幫助學習,簡直就是把知識複雜和模糊化。本人此系列一是複習一遍之前沒學好的c語言,二是提綱挈領地捋一下知識的難點,並且只說特殊及特別的東...

父類為形參,子類為實參時的注意事項

include using namespace std class fish class carp public fish void showinf fish fish 直接進行普通的值傳遞 int main 當函式引數是父類物件且傳入的引數是子類物件,然而我們用的是普通值傳遞時,子類物件僅僅將自己...