C++中函数参数传递引⽤和传递指针的区别
参考
总结如下:
相同点:
●都是地址的概念;
指针指向⼀块内存,它的内容是所指内存的地址;⽽引⽤则是某块内存的别名。
★不同点:
sizeof 指针●指针是⼀个实体,⽽引⽤仅是个别名;
●引⽤只能在定义时被初始化⼀次,之后不可变;指针可变;引⽤“从⼀⽽终”,指针可以“见异思迁”;
●引⽤没有const,指针有const,const的指针不可变;(具体指没有int& const a这种形式,⽽const int& a是有的,前者指引⽤本⾝即别名不可以改变,这是当然的,所以不需要这种形式,后者指引⽤所指的值不可以改变)
●引⽤不能为空,指针可以为空;
●“sizeof 引⽤”得到的是所指向的变量(对象)的⼤⼩,⽽“sizeof 指针”得到的是指针本⾝的⼤⼩;
●指针和引⽤的⾃增(++)运算意义不⼀样;
●引⽤是类型安全的,⽽指针不是 (引⽤⽐指针多了类型检查)
作者特意从编译的⾓度解释了,感觉⾮常清楚:
程序在编译时分别将指针和引⽤添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,⽽引⽤在符号表上对应的地址值为引⽤对象的地址值。符号表⽣成后就不会再改,因此指针可以改变其指向的对象(指针变量中的值可以改),⽽引⽤对象则不能修改。
多说⼀点:当数组作为参数传⼊的时候,会退化为指针!!!!!!!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论