指针持有另一个对象的地址,使我们能够间接地操作这个对象。
指针的典型用法是构建一个链接的数据结构,例如数(tree)和链表(list),并管理在程序执行过程中动态分配的对象,以及作为函数参数类型,主要用来传递数组或大型的类对象。
每个指针都有一个相关的类型。不同数据类型的指针之间的区别不是在指针的表示上,也不在指针所持有的值(地址)上--对所有类型的指针这两方面都是相同的。不同之处在于指针所指的对象的类型上。指针的类型可以指示编译器怎样解释特定地址上内存的内容,以及该内存区域应该跨越多少内存单元。
指针可以让它的地址值增加或减少一个整数值。这类指针操作,被称为指针的算数运算。这种操作初看上去并不直观,我们总认为是数据对象的加法,而不是离散的十进制数值的加法。指针加2意味着给指针持有的地址值增加了该类型两个对象的长度。例如,假设一个char是一个字节,一个int是4个字节,double是8个字节,那么指针加2是给其持有的地址值增加2、8、还是16,完全取决于指针的类型是char、int还是double。
实际上,只有指针指向数组元素时,我们才能保证较好地运用指针的算数运算。我们不能保证三个整数变量连续存储在内存中。因此,lp+2,也可能不产生一个有效的地址,这取决于在该位置上实际存储的是什么。指针算数运算的典型用法是遍历一个数组。
posted on 2012-11-12 23:13
寻步 阅读(186)
评论(0) 编辑 收藏 引用