粘个代码占位置,以后有时间把指针函数,函数指针都补上
# include & lt; iostream> using namespace 性传播疾病;void freePtr1 (int *, p1){,,,/*未释放内存前,,,,p1 Address :, 0012 fddc , p1 value :, 003429 b8, ,,,在这里,p1它也是一个变量,既然是一个变量, ,,,那么它将会以值的传递,把外部变量p1传到栈内,在栈内产生一个地址:0012 fddc, ,,,当然,它的值不会变仍然是指向堆地址:003429 b8 。*/,,,delete p1;,//系统回收p1值的地址003429 b8处的内存。 ,,,p1 =,零;//对p1赋以NULL值即:00000000,注意:p1本身的地址并没有变,变的是p1的值只,,,//释放内存后,,,,p1 Address :, 0012 fddc , p1 value :, 00000000,,,,//,出栈后,p1由于是一个临时对象,出栈后它会自动被视为无效。}void freePtr2 (int *,, p2),,{,,,/*未释放内存前,,,,p2 Address :, 0012 fec8 , p2 value :, 003429 b8, ,,,p2是一个指针的引用,即引用指向指针, ,,,记住引用的特点:对引用的对象直接操作,所以它的地址和值与栈外的主要()函数中,p2的值是同一个。*/,,,delete p2,,//对p2所引用的指针进行释放内存,即:系统回收主要()函数中,p2的值,003429 b8 地址处的内存。 ,,,p2 =,零;//对主要()函数中p2的指针赋以NULL值只,,,//释放内存后,,,,p2 Address :, 0012 fec8 , p2 value :, 00000000,,,,,//由于操作的对象都是主要()函数中的p2,所以它将应用到原变量中。}int 主要(){,,,int * p1 =, new int [1];,,,,//释放内存前→,,p1 Address :, 0012 fed4 , p1 value :, 003429 b8 ,,, freePtr1 (p1);,,,,//释放内存后→,,p1 Address :, 0012 fed4 , p1 value :, 003429 b8 ,,,int * p2 =, new int [1];,,,,//释放内存前→,,p2 Address :, 0012 fec8 , p2 value : 003429 b8 ,,,freePtr2 (p2);//*,的情况只,,,//释放内存后→,,p2 Address :, 0012 fec8 , p2 value :, 00000000}