初始化数组长度时需要注意字符串的长度,注意包括空字符.。
与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[] 回收空间。
浙公网安备 33010602011771号