在C++中通过引用调用
Calling by reference in C++
考虑这个例子
int value(int &a)
{
int z;
z=a;
return z;
}
我的问题是为什么它返回 a 而不是地址的值,因为 &a 指的是它的地址,而不是 value.it 应该将参数的地址分配给 z 并返回相同的地址。
&
符号在C++中具有多种含义。在此上下文中(声明)&
并不意味着它的地址意味着引用。它充当传入变量的别名,因此更改别名会更改变量本身。
这与声明指向变量的指针完全不同(尽管在某些方面相似),该变量保存其地址,该变量使用运算符的地址(也&
)获取。
因此,这一切都与上下文或如何使用&
有关:
声明:
int& i = n; // i is an int reference to n (& means reference)
算子:
int* i = &n; // i is an int pointer to n (& means address of)
int value(int &a)
这是接受参数作为引用的语法,即传递给此函数的参数的别名,而不是该变量的地址。
如果你想接受传递的参数的地址,那么你应该使用:-
int value(int *a) << This would store the address of passed argument.
相关文章:
- 如何在 c# 代码中通过引用调用时从 c++ dll 更新数组值?
- 推理类型如何工作"auto"和按引用调用?
- C++ 通过引用调用函数
- 按引用调用与按指针参数调用的差异 前递增和后递增
- C++当您取消引用指向类对象的指针,然后将其作为引用返回时,是否可以对此引用调用方法
- 通过引用调用模板专用化
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- 按引用调用还是按值调用?
- 从 JS (V8) 中C++对象的引用调用函数
- 为什么要抛出引用调用复制构造函数的异常?
- 向量 - 通过引用 c++ 调用
- 为什么可以从常量引用调用析构函数
- 使用全局引用调用函数时访问冲突
- 引用调用在 c++ 中如何工作?
- 它不是编译.我正在调用一个通过引用调用的函数,但有一个错误,无法将双*转换为双倍
- C++函数调用 lambda obj,按值调用比按引用调用快
- 如何在 C++14 中编写用于调用 Fortran 函数的通用包装器(按引用调用 --按值调用>)
- 通过引用调用类对象的 2D 数组
- 构造函数参数中的引用调用引用的默认构造函数
- 如何在 main 中使用包含对节点的引用调用函数