內存的管理
內存分配時候的步驟:
- 把指針指向分配內存的地方
- 用if(p==null)來判斷分配有無分配成功
- 在用完內存后要用delete來釋放內存
- 最后要把指針置空
//example1
int * p = new int;
if(p == NULL)
{
//內存分配失敗
//異常處理
}
delete p;
p = NULL;
//example2
int *p = new int[1000];
if(p == NULL)
{
//內存分配失敗
//異常處理
}
delete []p; //如果申請的是數組窖壕,則一塊delete
p = NULL; //用完之后把指針置空
const
- const與基本數據類型
int x=3; //定義的是一個變量,其值可更改
const int x=3; //定義的是一個常量,不可再賦值
- const與指針類型
(可變的指針不能指向const定義的常量瞻讽,不可變的指針可指向變量)
int const *p; <=> const int *p; 存儲內容可更改狐蜕,因為此時const修飾的是*p,所以*p不能再次賦值卸夕,而P可以再次賦值层释。如①
int *const p; 存儲內容不可更改,因為此時const修飾的是p快集,P不能再次賦值贡羔。如②
int const *const p; <=> const int *const p; 此時既不能改變p所指向的變量的存儲地址,也不能改變p所指向的變量的存儲內容
- 區(qū)分的奇淫巧技
說一個比較好記的方法來區(qū)分 int const p與 int const p个初,把*讀作pointer to然后從后往前讀.
第一個int const *p就可以讀作 p is a pointer to const int乖寒,p是指向常量的指針
第二個int* const p就可以讀作 p is a const pointer to int,p是指向int型的常指針
還有其中區(qū)別方法院溺,沿著*號劃一條線:
如果const位于*的左側楣嘁,則const就是用來修飾指針所指向的變量,即指針指向為常量珍逸;
如果const位于*的右側逐虚,const就是修飾指針本身,即指針本身是常量谆膳。