• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

简单谈谈C++中指针与引用的区别

c++ 搞代码 4年前 (2022-01-06) 29次浏览 已收录 0个评论

指针和引用在C++中很常用,但是对于它们之间的区别

来源gaodai.ma#com搞##代!^码网

很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法

指针与引用是C++中两个很重要的概念,它们功能看过去很相似,就是都是间接引用某个对象,那么我们应该在什么时候使用指针,什么时候使用引用呢,下面请允许我慢慢道来:

1.永远不要使用一个指向空值的引用。一个引用必须始终指向某个对象,所以当你确定使用一个变量指向某个对象时,但是这个对象在某些时间可能指向控制,这时候你就必须把变量声明为指针类型,而不是引用!当你确定这个变量始终指向某个对象是,这时候你就可以把变量声明为引用类型。

 char *str=0; //设置指针为空值 char &s=*str; //让引用指向空值 

你应该避免出现上面的错误!

2.因为引用肯定要指向一个对象,所以,在C语言里引用必须被初始化。

 string& rs;   // 错误引用必须被初始化 string s("xyzzy"); string& rs = s; // 正确 rs指向s 

指针没有这样的限制:

 string *ps; // 未 初 始 化 的 指 针 // 合 法 但 危 险 

3.不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高,因为在使用引用之前不需要测试它的合法性。

 void printDouble(const double& rd) { cout << rd;  // 不需要测试rd,它 }          // 肯定指向一个double值 

相反指针则应该总是被测试防止其为空:

 void printDouble(const double *pd) { if (pd) {  // 检查是否为NULL cout << *pd; } } 

4.指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象,但是引用则总是指向在初始化时被指定的对象以后不能改变。

 string s1("Nancy"); string s2("Clancy"); string& rs = s1; // rs 引用s1 string *ps = &s1; // ps 指向s1 rs = s2; // rs 仍旧引用s1, // 但是s1的值现在是 // "Clancy" ps = &s2; // ps 现在指向s2; // s1 没有改变 

5.重载某个操作符时你应该使用引用。最普通的例子是重载操作符[]。这个操作符典型的用法是返回一个目标对象其能被赋值。

总的来说在以下情况下你应该使用指针:

一是你考虑到存在不指向任何对象的可能,在这种情况下你能够设置指针为空;

二是你需要能够在不同的时刻指向不同的对象,在这种情况下你能改变指针的指向。

如果总是指向一个对象,并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。

以上就是简单谈谈C++中指针与引用的区别的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:简单谈谈C++中指针与引用的区别

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址