gpt4 book ai didi

C++传递指向具有引用参数的函数的指针

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:23 24 4
gpt4 key购买 nike

我知道调用 foo(value) 很好,但是调用 foo(*p) 是如何产生相同结果的呢?我以为它会出错,但它工作得很好。

*p 是解引用指针,获取 p 中存储的地址处的,那么这不等同于调用 foo(5) 吗?

void foo(int &ptr)
{
ptr = 6;
}

int main()
{
using namespace std;
int value = 5;
int *p = &value;
cout << "value = " << value << '\n';
foo(*p);
cout << "value = " << value << '\n';
return 0;
}

最佳答案

首先,当你取消引用你的指针 p 时,你会得到一个整数值(因为你将它声明为一个指向整数的指针)。在这种情况下,取消引用 p 会为您提供“值”变量的,呃,值。到目前为止和我在一起吗?

那么现在,函数调用中发生了什么?程序取消引用指针 p,然后将对变量(值)的左值引用传递给函数。该函数被定义为采用引用(带有一些语法糖的指针)。所以是的,您认为它被取消引用为整数是正确的。但是,C++ 无论如何都会传递值变量的地址,而不是整型变量,因为您已经告诉它只接受函数中的引用。

关于C++传递指向具有引用参数的函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com