C++中引用和常量指针是不是一回事啊?

frcsun 2009-03-04 10:43:32
引用&是不是就是常量指针(const pointer)?

两者有不少共同点:定义时都必须初始化;定义之后不能指向其它的对象。。。
...全文
623 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnStreamlet 2009-03-08
  • 打赏
  • 举报
回复
可能在背后的实现机制上来说是一回事,或者有点不同。

但最明显的一点是,使用上可以不加那颗 * 了
liuliuyushun 2009-03-08
  • 打赏
  • 举报
回复
引用与指针是完全不同的概念,常量指针也是指针.引用有很多指针没有的优点.
C++中引用用的较指针多.
s79947171 2009-03-08
  • 打赏
  • 举报
回复
楼上的大哥,指针必须初始化?????????不是吧????多说是个警告,怎么还编译错误?
ForestDB 2009-03-06
  • 打赏
  • 举报
回复
差不多的语义,语法不一样,一个.一个->
蜥蜴枪王 2009-03-06
  • 打赏
  • 举报
回复
引用&是一个变量的别名;例如: int& b=a;//b声明为a的引用,b和a拥有相同的内存地址,可以通过改变b的值来改变a包含的值.
常量指针表示存储在指针中的地址不能修改;像这样的指针只能指向初始化时指定的地址,但是,地址中的内容不是常量可以修改;(和指向常量的指针不同,指向常量的指针表示指向的内容是常量,不能够修改).
至于引用和常量指针的区别:int& b=a; int* const p=&a; b是a的引用,他们拥有相同的内存地址,指针p存储的是变量a的地址,指针p自己拥有另一个内存地址,可以通过间接运算符来解除指针的引用:int c=*p;
  • 打赏
  • 举报
回复
引用的是有常量属性,但是它不是指针,它是数据的别名,很明显有区别啊.
pengzhixi 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 frcsun 的帖子:]
引用&是不是就是常量指针(const pointer)?

两者有不少共同点:定义时都必须初始化;定义之后不能指向其它的对象。。。
[/Quote]

引用的对象肯定有效。在编译器对引用的实现来说常用常量指针来实现。你不能对引用取址。
rgmlkthh 2009-03-06
  • 打赏
  • 举报
回复
引用比较安全,指针用好了很好,用不好就非常不好。
vitamin_ease 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 howema 的回复:]
另外一个区别,引用不占用额外的内存,而指针是占内存的。
[/Quote]

占不占内存就和底层实现有关了,也许底层仍然是用类似指针的方法也说不定。
只能说引用的代价是比较小的。
在程序逻辑允许用引用的情况下用引用是更好的。
howema 2009-03-06
  • 打赏
  • 举报
回复
另外一个区别,引用不占用额外的内存,而指针是占内存的。
vitamin_ease 2009-03-06
  • 打赏
  • 举报
回复
本质区别:
一个是别名,一个是指针。

体现出来的区别:
1)常量指针可以解引用得到地址,引用不能。
2)常量指针在声明时可以为null,引用必须在声明时定义。
xuguod20042576 2009-03-06
  • 打赏
  • 举报
回复
当然不一样了
引用是一个变量的别名,而且不需要分配内存地址;
指针是指向一个数据的地址,而且必须初始化,否则会出现编译错误.
xuruichen 2009-03-06
  • 打赏
  • 举报
回复
常量引用:不能改变常量引用的值
常量指针:可以改变常量指针的值,但是不能改变常量指针的指向
dead_of_winter 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 howema 的回复:]
另外一个区别,引用不占用额外的内存,而指针是占内存的。
[/Quote]
目前已知的大部分实现中引用还是占内存的 详见拙文
http://blog.csdn.net/dead_of_winter/archive/2007/06/06/1641373.aspx

至于楼主提出的const指针 其实const主要也是一种语法限制 并不影响运行时
a378795679 2009-03-06
  • 打赏
  • 举报
回复
常量指针的本质还是指针和引用当然是有差别的了
dead_of_winter 2009-03-06
  • 打赏
  • 举报
回复
主要是语法区别 编译成的汇编代码没什么区别
frcsun 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 kostion 的回复:]
楼主问的是引用和常量指针,,,,,回复的慢慢的就变成引用和指针了。
[/Quote]

可能大家觉得那个有局限性不够发挥啊~~~呵呵~~~
kostion 2009-03-06
  • 打赏
  • 举报
回复
楼主问的是引用和常量指针,,,,,回复的慢慢的就变成引用和指针了。
caremsi 2009-03-06
  • 打赏
  • 举报
回复
学习
frcsun 2009-03-05
  • 打赏
  • 举报
回复
呵呵 明白了 二者还是两个不同的概念 谢谢大家了
加载更多回复(11)

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧