程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 使用delete刪除指針(1)

C++ 使用delete刪除指針(1)

編輯:C++入門知識

眾所周知,最開始我們用new來創建一個指針,那麼等我們用完它之後,一定要用delete將該指針刪掉。但是,值得注意的是,難道就僅僅是刪除這個指針這麼簡單的麼?下面,我們用一個程序來說明這個問題:


#include
02
using namespace std;
03
int main()
04
{
05
    int *p=new int;
06
    *p=3;
07
    cout<<"將3賦給p的地址後,指針p讀取的值:"<<*p<<endl;
08
    delete p;
09
    cout<<"刪除空間後,指針p讀取的值:"<<*p<<endl;
10
    long *p1=new long;
11
    *p1=100;
12
    cout<<"創建新空間後,指針p中保存的地址:"<<p<<endl;
13
    cout<<"指向新空間的指針p1保存的地址:"<<p1<<endl;
14
    *p=23;
15
    cout<<"將23賦給p的地址後,指針p讀取的值:"<<*p<<endl;
16
    cout<<"將23賦給p的地址後,指針p1讀取的值:"<<*p1<<endl;
17
    delete p1;
18
    return 0;
19
}
       在上面這個程序中,我們在第8行就將指針p利用delete刪掉了。但是,我們來看看程序的輸出結果:

 

      對照著上面的程序,我們來分析一下這個輸出。首先,我們在程序的第5行初始化了一個指針p。之後輸出指針p讀取的值。由於第6行的原因,程序肯定會輸出3 了。之後,我們在程序的第8行刪除了這個指針p。但是我們驚奇的發現,在程序的第9行竟然可以輸出指針p讀取的值。我們不是已經把它刪了麼?其實不 然,debug,上圖:


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved