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

问题描述 投票:0回答:1
#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++引用的函数。

c++ pointers reference pass-by-reference
1个回答
0
投票

指针 z 指向 d.

struct x* z = &d;

衍生引用指针,你可以得到对象d的l值,这个对象通过引用传递给函数的参数。

magic(*z);

所以没有什么魔力。

其实这两个电话

magic( *z );

magic( d );

是等价的。唯一的区别是在第一个调用中使用了更复杂的表达式。

© www.soinside.com 2019 - 2024. All rights reserved.