内存的管理
内存分配时候的步骤:
- 把指针指向分配内存的地方
- 用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所指向的变量的存储内容
- 区分的奇淫巧技
说一个比较好记的方法来区分 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型的常指针
还有其中区别方法,沿着*号划一条线:
如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。