溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++指針參數(shù)引用

發(fā)布時(shí)間:2020-06-19 17:30:04 來源:網(wǎng)絡(luò) 閱讀:356 作者:lzwxx 欄目:網(wǎng)絡(luò)安全

粘個(gè)代碼占位置,以后有時(shí)間把指針函數(shù),函數(shù)指針都補(bǔ)上

C++指針參數(shù)引用

#include <iostream>using namespace std;void freePtr1(int* p1){    /*未釋放內(nèi)存前 ->  p1 Address : 0012FDDC  p1 value : 003429B8,
    在這里,p1它也是一個(gè)變量,既然是一個(gè)變量,
    那么它將會(huì)以值的傳遞,把外部變量p1傳到棧內(nèi),在棧內(nèi)產(chǎn)生一個(gè)地址:0012FDDC,
    當(dāng)然,它的值不會(huì)變?nèi)匀皇侵赶蚨训刂罚?03429B8 。*/
    delete p1; //系統(tǒng)回收p1值的地址003429B8處的內(nèi)存。
    p1 = NULL;//對(duì)p1賦以NULL值即:00000000,注意:p1本身的地址并沒有變,變的是p1的值。    //釋放內(nèi)存后 ->  p1 Address : 0012FDDC  p1 value : 00000000    //,出棧后,p1由于是一個(gè)臨時(shí)對(duì)象,出棧后它會(huì)自動(dòng)被視為無效。}void freePtr2(int*& p2)  {    /*未釋放內(nèi)存前 ->  p2 Address : 0012FEC8  p2 value : 003429B8,
    p2是一個(gè)指針的引用,即引用指向指針,
    記住引用的特點(diǎn):對(duì)引用的對(duì)象直接操作。所以它的地址和值與棧外的main()函數(shù)中,p2的值是同一個(gè)。*/
    delete p2; //對(duì)p2所引用的指針進(jìn)行釋放內(nèi)存,即:系統(tǒng)回收main()函數(shù)中 p2的值 003429B8 地址處的內(nèi)存。
    p2 = NULL;//對(duì)main()函數(shù)中p2的指針賦以NULL值。    //釋放內(nèi)存后 ->  p2 Address : 0012FEC8  p2 value : 00000000,    //由于操作的對(duì)象都是main()函數(shù)中的p2,所以它將應(yīng)用到原變量中。}int main(){    int *p1 = new int [1];    //釋放內(nèi)存前->  p1 Address : 0012FED4  p1 value : 003429B8    freePtr1(p1);    //釋放內(nèi)存后->  p1 Address : 0012FED4  p1 value : 003429B8
    int *p2 = new int [1];    //釋放內(nèi)存前->  p2 Address : 0012FEC8  p2 value : 003429B8
    freePtr2(p2);//*&的情況.    //釋放內(nèi)存后->  p2 Address : 0012FEC8  p2 value : 00000000}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI