夏夜辰风68
了解c/c++的读者可能会发现,指针和引用有着诸多的相似之处。指针是c语言本身就有的一个特性,而引用是c++继承了c语言指针的同时才引用的。那么它们之间隐藏的一些深层次的联系到底是怎样的呢?
指针和引用的共同点
使用它们作为形参,都可以通过该参数修改主调函数中的变量以达到参数双向传递的目的,都可以通过避免值复制的发生从而减少函数调用时的数据传递开销。它们所占用的内存空间存储的都是地址。因为在程序运行时,变量只能依靠地址来区别,无论是指针还是引用只有存储的是地址,在运行时才能准确定位到目标,进行准确的操作。指针和引用的区别
普通指针可以多次被赋值,也就是可以多次更改它所指向的对象,而引用则不能,引用在初始化时就指定被引用的对象,其后不能更改;2.指针可以再次取地址,而引用则不行。
比如上表最后一行,ptr得到的是变量temp的地址,而ptr还能在取地址&ptr得到是指针的地址,而引用却不能再取地址了,因为引用本身的地址是不可以获得的,引用本身所占用的空间则被完全隐藏起来,引用一经定义后,对于它的全部行为全是针对引用对象。
3.既有常指针也有指针常量,但是只有常引用没有引用常量,详细见下图:
没有引用常量的原因在于,引用在初始化时就指定了它所引用的对象,其后不能更改,这使得引用本身就具有常量性质了。