C++:将引用的地址作为指针传递是否会产生未定义的行为?

问题描述 投票:0回答:1

我有以下代码,

#include <iostream>
using namespace std;

void swap(int *x, int *y)
{
    int z = *x;
    *x = *y;
    *y = z;
}

// Driver Code
int main()
{
    int a = 45, b = 35;
    auto& a_ref = a;
    cout << "a = " << a_ref << " b = " << b << "\n";

    swap(&a_ref, &b);

    cout << "After Swap with pass by pointer\n";
    cout << "a = " << a << " b = " << b << "\n";
}

可以看出,我首先获得

a
的引用,然后将其作为指针传递,我想知道这有时会给出
undefined
吗?

c++ pointers reference
1个回答
4
投票

您不能获取推荐人的地址。当引用类型的变量出现在表达式中时,它的计算结果始终为它所引用的对象(或函数)。所以表达式

&a_ref
无论如何都等价于
&a

[表达式类型]/1:

如果表达式最初的类型为“reference to

T
”,[...]。表达式指定引用所表示的对象或函数

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