c++指標小計

嘰了咣啷biang發表於2012-07-01

    假如沒有刪除第一個指標就對其重新賦值就會造成記憶體洩漏。

 

 

    使用空值的指標會令程式出錯。

 

    指標也可以與指標相加相減比較,可以自加自減,都是相對於指標儲存的地址操作,比如自加,int型的指標會自加四個位元組,兩個指標比較也是比較兩個指標的記憶體地址。

 

常量指標

       我們可以將指標宣告為常量指標,該指標不可改變如:

          int *const p;

         但是它指向的整型變數是可以改變值的。

#include <iostream>
using namespace std;
int main()
{
	int a=3;
	int *const p=&a;
	cout<<"a:"<<a<<endl;
	a=4;
	cout<<"a:"<<a<<endl;
	return 0;
}


結果顯示a=3和a=4。

 

指向常量的指標

 

定義一個常量指標   const int *p;

 

指向常量的指標指向的變數是不可以修改的,但是該指標可以被修改,與常量指標的功能相反,指向常量的常指標是指向的變數和指標都不可以修改。指向常量的常指標寫為 const int *const p;。

 

 

總結:

 

        指標可以通過記憶體地址間接訪問資料,每個變數都有自己的地址,我們可以通過取地址符(&)獲得他們的地址。他們的地址可以儲存在指標變數中。我們可以通過間接運算子(*)讀取指標指向地址的值。

 

         指標的型別必須與它所指向的目標一樣,指標未被初始化一個記憶體地址或者剛刪除一個指標都要將該指標賦為0,否則的話將會導致該指標失控。

         假如不想改變指標,那麼將該指標定義為const,假如不想改變指標指向的值,將指標指向的值定義為const,假如既不想改變指標也不想改變指標指向的值,那麼把指標和指標指向的值都定義為const。

         用new在堆中可以建立一個物件,然後將記憶體地址賦給指標,之後我們就可以通過指標訪問堆中的物件,假如要刪除物件,我們只需要對指標受用關鍵字delete,那麼就會刪除指標指向的物件並釋放該儲存物件的記憶體空間。但是我們要注意一點,指標並沒有刪除,並且它只想原來的記憶體空間,因此我們必須要對它的記憶體地址清零或者重新賦值。

相關文章