指针和L值引用
Pointers and LValue Reference
我有这种情况。
case 1
void printInt(int & i) {}
int main () {
int i=1;
printInt(&i);
}
printInt需要一个引用,因此,在main内部,我调用printInt函数并提供引用I。这是正确的吗。
那么我也可以做
case 2
int main () {
int i=1;
printInt(i); // i is a lvalue, and printInt function is expecting a lvalue
}
那么,情况1和情况2看起来有冲突吗?
第一种情况甚至不编译,因为您正在传递int*
,但编译器希望引用int
类型。
printInt(&i);
在上面的语句中,您正在传递一个整数的地址。因此,在接收端,它应该是一个指针。
编辑:
我想你混淆了指针和引用。将引用视为变量的别名。在某种程度上,类比就像是放在桌面上的应用程序的捷径。当您单击快捷方式时,您实际上正在运行安装在Applications目录中的可执行文件。因此,快捷方式更像是运行应用程序可执行文件的别名。
为一个应用程序设置的快捷方式可以用于打开不同的应用程序吗?不可以。由于类似的原因,无法重新密封引用。
情况1实际上是不正确的,它需要一个可引用的整数,但您为它提供了指向整数的指针。
第二种情况是正确的。当您通过引用将值int x
传递给函数foo(int &y)
时,您会写:
foo(x);
这就好像你说:
int &y = x;
在第一种情况下,您调用
foo(&x);
就好像你说:
int &y = &x;
引用不是这样定义的。
相关文章:
- C++取消引用指针.为什么会发生变化
- 深层复制具有自引用指针的类
- Visual c ++,使用字符串引用/指针调用 dll 函数
- std::unordered_map::提取引用/指针失效
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 如何在 c++ 中使用带有数学运算的引用/指针?
- 了解通过引用传递取消引用指针时C++堆/堆栈分配
- 取消引用指针并立即为其分配变量,导致分段错误
- 如何获取指向类(而不是对象)的引用/指针
- 将类型参数传递给自引用指针
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 在析构函数内取消引用指针时出现分段错误
- 来自引用指针的内存泄漏
- 引用指针后面的值
- 无法取消引用指针
- 引用指针调用成员函数
- 未定义的引用指针的变量模板在clang中功能,而不是GCC
- 取消引用指针以创建数组的副本
- 有关启动引用指针的引用的问题