#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 ++引用的函数吗?
答案 0 :(得分:0)
指针z
指向对象d
。
struct x* z = &d;
取消引用指针,您将获得对象d的左值,该值作为参数通过引用传递给函数
magic(*z);
所以没有魔术。
实际上这两个电话
magic( *z );
和
magic( d );
是等效的。唯一的不同是,在第一个调用中使用了更复杂的表达式。