1.概念
new
//typename * pointer_name = new typename;
delete
//delete pointer_name;
注意:(1)new之後要判斷,指標是否為null,記憶體被耗盡時,防止程式超界、
(2)如果用變數分配的記憶體,則不能使用delete
int a = 5;
int * p = &a;
delete p; //error!!
(3)盡量不要建立兩個指標指向同一記憶體塊,可能對此記憶體塊刪除兩次。
但對於返回指標的函式,使用是有道理的。(道理在哪??)
2.動態陣列
(1) 靜態聯編:通過宣告來建立陣列--編譯時為其分配記憶體空間,編寫程式時,確定陣列長度;
動態聯編:通過new分配空間--執行時確定陣列的長度
(2) int * pt = new int[10];
pt[0] = 1; //可以使用陣列的方式賦值
pt[1] = 2;
pt[3] = 3;
pt = pt +1; //此時pt[0] = 2; pt[1] = 3;
pt = pt -1; //指標變數指向原來的值,給後面的delete 提供正確的位址
delete pt;//delete 注意:a.與new或new 配對使用
b.不能使用delete釋放同一塊記憶體兩次,造成不確定
c.對空指標使用delete安全,但作用是??(不理解)
d.使用new為乙個實體分配記憶體,則應使用delete(沒有括號來釋放)。
(書上看到的,不理解實體分配是什麼情況?為什麼沒有括號?)
C 1 指標的學習
c 中的指標代表的是記憶體中的一段位址,通過指標可以直接訪問記憶體中的具體的位址。指標的定義格式 型別 變數值 int pint eg.宣告了乙個整型的指標變數 指標在宣告的時候最好進行初始化。初始化的方式如下 int pstr null include using namespace std in...
C 學習筆記 四 指標 1
函式存放在記憶體的 區域內,它們同樣有位址,我們如何能獲得函式的位址呢?如果我們有乙個int test int a 的函式,那麼,它的位址就是函式的名字,這一點如同陣列一樣,陣列的名字就是陣列的起始位址。定義乙個指向函式的指標用如下的形式,以上面的test 為例 int fp int a 這裡就定義...
C 學習1 指標的使用
c 是一門解釋型語言,其中對指標進行了封裝,因此使用者無法直接呼叫物件的指標。但是當使用c 呼叫c c 的dll時,常常會函式引數或者返回值為指標的情況。這種情況下就需要對指標進行操作。在c 中使用指標,需要首先回答以下幾個問題 c 提供的指標為intptr或者uintptr,用於表示指標或控制代碼...