c – int和意思是什么

一个C的问题,

我知道

int* foo(void)

foo将返回一个指向int类型的指针

怎么样

int &foo(void)

它返回什么?

非常感谢!

解决方法

它返回对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的书.他可以比我能够更好地解释差异.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...