我可以将(* ptr)传递给以引用为参数的函数吗

时间:2020-05-15 18:05:55

标签: c++ pointers reference pass-by-reference

#include<vector>
using namespace std;

struct x{
    vector<int> y;
};
void magic(struct x& d)
{
    d.y[0] = 5;
}
int main() {
    struct x d;
    d.y = {1,2,3};

    struct x* z = &d;
    magic(*z);

    cout<<z->y[0];
    return 0;
}

此代码有效吗?我们可以将* z传递给需要c ++引用的函数吗?

1 个答案:

答案 0 :(得分:0)

指针z指向对象d

struct x* z = &d;

取消引用指针,您将获得对象d的左值,该值作为参数通过引用传递给函数

magic(*z);

所以没有魔术。

实际上这两个电话

magic( *z );

magic( d );

是等效的。唯一的不同是,在第一个调用中使用了更复杂的表达式。

相关问题