随笔-60  评论-262  文章-1  trackbacks-0
http://blog.tinybrowser.net/archives/1034
posted on 2009-09-09 11:50 free2000fly 阅读(2140) 评论(18)  编辑 收藏 引用

评论:
# re: C++ 的指针和引用探秘 2009-09-09 13:29 | diwayou
以我现有的知识理解,引用就是指针的C++封装。  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-09 14:03 | free2000fly
@diwayou
同感  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-09 14:22 | oh,no
引用本来就是编译器用指针实现的  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-09 15:42 | Hero
受教了,有了进一步理解
  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-09 16:45 | S.l.e!ep.¢%
'指针' 和 '引用' 都保存着一个 '地址'

但 指针所保存的地址是 可以改变的
但 引用保存的地址是不能改变的

所以, 引用 相当于 指针常量   回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-09 16:58 | free2000fly
@S.l.e!ep.¢%
同意, 这还是语言层面的概念.  回复  更多评论
  
# re: C++ 的指针和引用探秘[未登录] 2009-09-09 17:34 | foxriver
引用一直从来只定义const的飘过。  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-09 22:26 | Vincent
又见ls...
呵呵..
个人理解只能说一句指针和引用是真的完完全全不同的两个东西..
当然..也许swap可以用引用和可以用指针..但还是完全不同的东西..
其实再深一点说- -两者没任何联系...

当然..只是我的理解
  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-10 07:44 | diwayou
@Vincent
呵呵。。。 不知道你是从哪个层面说他俩没任何关系  回复  更多评论
  
# re: C++ 的指针和引用探秘[未登录] 2009-09-10 09:01 | dophi
其实引用这种语法比起指针来说有这么个好处(虽然也是语言层面的东西,但是确实很有用),就是直接传一个数组的时候,在函数内会当成一个指针用(不在是数组类型),而用引用的话,在函数内,依然是一个数组,你可以对它做数组的操作,就像是对原来对象进行操作一样。比如,sizeof这种操作,但是不用引用的话,就没法用sizeof了,因为是一个指针,sizeof的值是指针的值而不是数组。  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-10 09:51 | free2000fly
@dophi
就你的问题顺势找了找相关主题,
http://zhidao.baidu.com/question/71567272.html
好像 C++ 语法里面不允许传递数组的引用作为函数的参数, 参看上面正文的余话  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-10 14:26 | 不戒大师
不就是堆和栈的问题么
  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-10 15:39 | nelson
void RefAsParam(int (& aRR)[10]);

数组的引用作函数入参要这样……  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-10 15:43 | nelson
#include <iostream>
using namespace std;

void RefAsParam(int (&aRR)[5])
{
cout << aRR[3] << endl;
}

template < size_t SZ >
void RefAsParamT(int (&aRR)[SZ])
{
cout << aRR[0] << endl;
}

void main()
{
int a[5] = { 1, 2, 3, 4, 5};

RefAsParam( a );

RefAsParamT( a );

getchar();
}

我觉得这里用模板的好处是,在函数声明、定义的时候无需对数组引用的大小作限制,调用RefAsParamT( a )时隐式地将非类型参数实例化了,用着比较爽  回复  更多评论
  
# re: C++ 的指针和引用探秘 2009-09-10 15:46 | free2000fly
@nelson
谢谢, 兄弟高招. 也找到关于这个问题的一个网页了:
http://tech.e800.com.cn/articles/2009/810/1249873457464_1.html
前述函数甚至可以改成这个样子:
template < typename elemType, size_t SZ >
void RefAsParamT(elemType (& aRR)[SZ])
{
cout << aRR[0] << "====" << sizeof(aRR) << endl;
}
但本例及 nelson 兄弟的例子都不能在 VC6 上通过编译, 在其它如 VS2003 及以上无碍.  回复  更多评论
  
# re: C++ 的指针和引用探秘[未登录] 2009-09-10 16:02 | vincent
@diwayou
从推出引用的目的来看^_^  回复  更多评论
  
# re: C++ 的指针和引用探秘[未登录] 2009-09-10 16:09 | vincent
@vincent
另外..这只是单纯我的看法..还未成型...我的这个想法绝对不应该误人子弟^_^  回复  更多评论
  
# re: C++ 的指针和引用探秘[未登录] 2009-11-20 16:17 | xu
@nelson
void RefAsParam(int (& aRR)[10]);

数组的引用作函数入参要这样……


我需要不是确定大小的数组怎么办  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理