解决方法
它返回对int的引用.引用类似于指针,但有一些重要的区别.我建议您阅读指针,引用,对象和原始数据类型之间的差异.
“有效C”和“更有效的C”(由Scott Meyers都有)对差异以及何时使用指针与引用有一些很好的描述.
编辑:有很多答案说,“参考只是语法糖,更容易处理指针”的一些事情.他们肯定不是.
请考虑以下代码:
int a = 3; int b = 4; int* pointerToA = &a; int* pointerToB = &b; int* p = pointerToA; p = pointerToB; printf("%d %d %d\n",a,b,*p); // Prints 3 4 4 int& referencetoA = a; int& referencetoB = b; int& r = referencetoA; r = referencetoB; printf("%d %d %d\n",r); // Prints 4 4 4
行p = pointerToB更改p的值,即现在它指向不同的内存块.
r = referencetoB做了一些完全不同的事情:它将b的值分配给过去的值.它根本不改变r. r仍然是对同一块内存的引用.
差异是微妙但非常重要的.
如果你仍然认为引用只是指针处理的语法糖,那么请阅读Scott Meyers的书.他可以比我能够更好地解释差异.
原文地址:https://www.jb51.cc/c/112209.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。