C++基础知识回顾

2017-08-28  本文已影响0人  你好667

内存的管理

内存分配时候的步骤:

  1. 把指针指向分配内存的地方
  2. 用if(p==null)来判断分配有无分配成功
  3. 在用完内存后要用delete来释放内存
  4. 最后要把指针置空
//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

http://blog.csdn.net/Eric_Jo/article/details/4138548

  1. const与基本数据类型
int x=3;            //定义的是一个变量,其值可更改
const int x=3;      //定义的是一个常量,不可再赋值
  1. 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所指向的变量的存储内容
  1. 区分的奇淫巧技

说一个比较好记的方法来区分 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就是修饰指针本身,即指针本身是常量。

上一篇下一篇

猜你喜欢

热点阅读