数组操作 指针

来源:互联网 发布:lua源码 编辑:程序博客网 时间:2024/05/19 16:02

数组一旦定义,就不允许再添加新元素。

如果必须在数组中添加新元素,必须自己管理内存:要求系统重新分配一个新的内存空间用于存放更大的数组,然后把原数组的所有元素复制到新分配的内存空间中。

在用下标访问元素时,vector使用vector::size_type作为下标的类型,而数组下标的正确类型则是size_t

数组越界只能靠自己注意细节,通过编译并执行的程序仍然存在致命的错误,这并不是不可能的。

注:导致安全问题的最常见原因是所谓的“缓冲区溢出”错误,当我们在编程时没有检查下标,并且引用了越出数组或其他类似数据结构边界的元素时,就会导致这类错误。


指针是指向某种类型对象的复合数据类型,是用于数组的迭代器:指向数组中的一个元素。

在指向数组元素的指针上使用解引用操作符*和自增操作符++,与在迭代器上的用法类似。

对指针进行解引用操作,可获得该指针所指对象的值。

与迭代器一样,指针提供对其所指对象的间接访问,只是指针结构更通用一些。

与迭代器不同的是,指针用于指向单个对象,而迭代器只能用于访问容器内的元素。

具体来说,指针保存的是另一个对象的地址。

eg:string s("hello world");

string  *sp  =  &s;     //定义了一个指向string类型的指针sp,并初始化sp使其指向string类型的对象s。

&取地址操作符只能用于左值,才能返回的是该对象的存储地址。

由于用于vector类型,string类型或内置数组的下标操作和解引用操作生成左值,因为可对这两种操作的结果做取地址操作。

0 0
原创粉丝点击