我知道引用是语法糖,因此代码更容易读写.
但有什么区别?
以下答案和链接摘要:
NULL),而引用总是指对象.&obj + 5).澄清一个误解:
C++标准非常谨慎,以避免规定编译器如何实现引用,但每个C++编译器都将引用实现为指针.也就是说,声明如下:
Run Code Online (Sandbox Code Playgroud)int &ri = i;如果它没有完全优化,则分配与指针相同的存储量,并将地址
i放入该存储中.
因此,指针和引用都使用相同数量的内存.
作为基本规则,
有趣的读物:
有什么区别
你能给我一些例子吗?
我试图在C中使用传递引用,以便该函数可以修改传递给它的参数的值.这是函数签名:
int locate(char *name, int &s, int &i)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译它时,我得到这个错误,特指上述行:
错误:在'&'标记之前预期';',','或')'
如果我删除'&'程序将编译,但它显然无法正常运行.这有什么不对?如何通过参考工作打电话?
我正在读一本由 Brian W. Kernighan 和 Dennis M. Ritchie 撰写的《c 编程语言》一书。
本书列出了下面的代码
void strcpy(char *s, char *t){
while((*s = *t) != '\0'){
s++;
t++;
}
}
Run Code Online (Sandbox Code Playgroud)
并说:
因为参数是按值传递的,所以 strcpy 可以以任何它喜欢的方式使用参数 s和t
我不同意这一点。为什么上面的参数是按值传递的?
根据另一本书《C 如何编程》:
在 C 中,您使用指针和间接运算符来模拟引用调用。当调用带有应修改参数的函数时,将传递参数的地址。
从后一个角度来看,它绝对是按引用调用。
请告诉我哪种方法是正确的以及为什么,谢谢!
顺便说一句,赋值后*s = *t,与哪一个进行比较'\0'?*s或者*t?