指標形參與引用形參

2021-09-02 19:37:30 字數 640 閱讀 4362

看了很多關於指標形參和引用形參的解答,不盡人意。

指標形參使用情形:(1)標準的c中,c沒有引用(2)形參可以為空

引用形參使用情形:(1)形參不可以為空,總指向某個物件

指標形參:指標的行為和其他非引用型別一樣,當執行指標拷貝操作時,拷貝的是指標的值,拷貝之後,兩個指標是不同的指標,如:

int n = 0, i = 42;

int *p = &n,*q = &i;

*p = 42; //你值改變

p = q;//p現在指向i,但是i和n的值都不變

優點是可以明確的表示函式所操縱的是指向陣列元素的指標,而不是陣列本身,而且可以使用任意長度的實參陣列來呼叫函式;其缺點是函式體不能依賴於陣列的長度,容易造成陣列記憶體的越界訪問,從而產生錯誤的結果或導致程式崩潰。

引用形參:優點是函式體依賴於陣列的長度是安全的;使用引用避免拷貝,拷貝大的型別物件或者容器物件比較低效,甚至有的類型別(包括io型別在內)根本就不支援拷貝操作。當某種型別不支援拷貝操作時,函式只能通過引用形參訪問該型別的物件。比如使用單例模式時,建構函式和拷貝建構函式此時為私有化,當其物件作為引數傳遞時,應使用引用形參

函式不能改變實參指標變數的值,但可以改變實參指標變數所指向變數的值。

非引用形參VS指標形參VS引用形參

一 非引用形參 voidadd1 intv1 這是最普通的形參方式,當函式被呼叫時,呼叫拷貝建構函式,生產乙個新的例項,函式所有的修改,都是對新的例項的修改 函式退出之前,會呼叫析構函式,資源。二 指標形參 voidadd2 int p 使用指標做為函式的形參,同樣指標的值 指標的位址 不會因為 p...

引用形參 指標形參的使用

引用形參 指標形參可以改變主函式內的實參值 includeusing std cin using std cout using std endl 形參其實是在把實參傳遞給子函式的時候定義了乙個新的變數,但是這個變數的值和實參相等,所以在子函式裡無論怎麼修改都不會影響到呼叫它的函式的實參的值 int ...

函式形參 指標,引用,const,陣列形參

指標也是物件,也會拷貝,所以分實參指標和形參指標。在傳進函式時,實參進行拷貝,所以在函式裡改變指標值不影響實參。void reset int ip 引用不是物件,通過引用可以改變實參 void reset int i 使用引用的好處是避免了拷貝。其實也只是兩個變數名的傳遞,和變數規則一致,如果在函式...