學習 C (1) 指標 new 和delete

2021-06-13 13:03:03 字數 889 閱讀 9970

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,用於表示指標或控制代碼...