• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
nathaniel pong
一个小子在默默的学习
博客园    首页    新随笔    联系   管理    订阅  订阅
数组与指针,vector与迭代器

初始化数组长度时需要注意字符串的长度,注意包括空字符.。

 

与vector对比,数组不可以直接复制和赋值,也不可以添加新的元素。而vector可以,并通过v.push_back(t)添加新的元素成员。

 

迭代器是用于访问容器中的元素的,而指针时指向单个对象,是保存该对象的内存地址的。当指针和数组一起使用的时候就相当于数组的迭代器。

 

指针决定与所指向的对象的类型。注意初始化的时候赋值应该是一个地址。接引用(*)可以改变指针指向的对象的值。

 

引用和指针解引用的区别:定义引用是必须初始化,而且始终指向初始化的对象不能改变,引用赋值修改是修改该引用关联的对象。相比之下,指针变量可以改变指向的对象,指针的赋值修改是改变指针变量指向的对象。当*P=6(P是一个指针)时候才是改变指针变量指向的对象的值。

 

指向指针的指针,需要两次解应用才可以得到最后一个对象的值。

 

指针的算术运算注意不要越界。加减一个整形数值!两个指针的相减是一个ptrdiff_t的数据。是一个sign类型的定义在cstddef头文件当中的。

 

当指针是指向数组的之后,可以利用下标操作。通过运算*p=a,*p1=a+size知道数组第一个值和超出最后一个值的位置。

  例如: int *p=&a[2];

         Int j=p[2]  (等价于*(p+2),即是a[4])

 

 指向const对象的指针:const  int *p.

注意指针p本身不是const,它是可以进行赋值操作的使其指向另外一个对象的。但是不能通过该指针改变指向对象的值。(因为对象是一个const)不能使用void *指针指向const对象,要用const void *保存const对象的地址。

注意不能通过指向const对象指针改变对象的值,就算对象不是const对象。

 

对比const指针,任何赋值操作都是非法的。

 

动态分配的数组将一直存在,直到显式释放它的内存。用关键字new和delete

 

分配数组注意指定的指针类型,维数来定义。New返回的是新分配数组的第一个元素的指针。动态分配的数组的初始化看对象的类型决定。如果是类类型就是默认的构造函数,如果是内置类型就是无初始化。

 

释放内存用到关键字delete:

  Delete [] 数组名字 注意中间的方括号必不可少的。

 

基本类型的对象没有析构函数,所以回收基本类型组成的数组空间用 delete 和 delete[] 都是应该可以的;但是对于类对象数组,只能用 delete[]。对于 new 的单个对象,只能用 delete 不能用 delete[] 回收空间。

posted on 2012-07-10 22:06  nathaniel pong  阅读(682)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3