c 學習之 指標和自由儲存空間

2021-04-17 18:44:27 字數 1223 閱讀 8285

1.申明和初始化指標

int * p1;

這表明 *p1的型別為int 。由於*操作符被用於指標,因此p1變數本身必須是指標。可以這樣說,p1是指標(也即是位址空間),*p1是int,而不是指標;

順便說一下,*操作符兩邊的空格是可選的.傳統上c程式設計師用 int *p1,而很多c++程式設計師用int* p1;

可以在申明語句中初始化指標,在這種情況下,被初始化的是指標,而不是它所指向的值.也就是說下面的語句:

int p1=5;

int *pt=&p1;

將pt(而不是*pt)的值設定為&p1.

2.指標的危險

int *p1;

*p1=12;

p1確實是乙個指標,但他指向那裡呢,上敘**並沒有將位址賦給p1,那麼12將被放在**呢,我們不知道.

3.用new來分配記憶體

指標真正的用武之地在於,在執行階段分配未命名的記憶體以儲存值,在這種情況下只能用指標來訪問記憶體.

下面是這樣的乙個範例:

int *p1=new int;

*p1=1000;

陣列:int *p1=new int[10];

p1代表的是位址,而*p1則代表乙個值;

對於陣列p1來講,new操作符返回第乙個元素的位址,在這個例子中,該位址被賦給指標p1;

計算機可能會由於沒有足夠的記憶體而無法滿足new的請求,在這種情況下,new將返回0;

4.用delete來釋放記憶體

delete操作符,他使得在用完記憶體後,能夠將其歸還給記憶體池,這是通向最有效的使用記憶體的的關鍵的一步

int *ps = new int;

delete ps;

這將釋放ps指向的記憶體,但不會刪除指標ps本身,也就意味著可以將指標ps重新指向另外乙個新分配的記憶體塊;

注意:一定要配對的使用new和delete,否則將發生記憶體洩露,也就是說被分配的記憶體再也無法使用了.

int *p1=new int[10];

delete p1;

5.指標與陣列

#include

int main()

下面是程式的輸出:

p3[1] is 0.3

now p3[0] is 0.3

c 指標和自由儲存空間

本博文為本人閱讀c primer plus第4章復合型別後做的小筆記,僅記錄本人不熟悉或者容易犯錯的地方 指標是乙個變數,儲存的是值得位址,而不是值本身 位址運算子 可以獲得變數的所在位址 指標名表示的是位址,運算子被稱為間接值 indirect value 或者解除引用 dereferencing...

8 C 指標和自由儲存空間

8 c 指標和自由儲存空間 電腦程式在儲存資料時必須跟蹤3中基本屬性。指標是 乙個變數,其儲存的是值得記憶體位址 對於常規變數的位址,只需要對變數應用位址運算子 就可以獲得它的位置 例如,如果home是乙個變數,那麼 home就是他的位址。include stdafx.h include 引用庫函式...

指標和自由儲存空間 陣列 指標算術

第4章,第7 8節 指標和自由儲存空間 是變數,儲存的是值的位址 int p1,p2 中 p1表示指標,而p2表示整型變數 指標本身的長度通常相同 建立時,會分配用來儲存指標位址的記憶體,但不會分配用來儲存指標所指向的資料的記憶體 指標不是整型,不能簡單地將整數賦給指標 new是從heap或free...