gpt4 book ai didi

c++ - 用于初始化引用的指针引用的值

转载 作者:行者123 更新时间:2023-12-02 09:49:31 25 4
gpt4 key购买 nike

好吧,我对以下陈述有一个微不足道的疑问

int a = 5;
int* ptr = &a;
int &x = *ptr;
x = 3;
cout<<a;

输出为 3; *ptr将取消引用的整数值传递给引用引用 &x但是怎么变了 x变化 a ?. *ptr只是抛出一个整数,没有它指向的地址。编译器如何绑定(bind) xa's地址??

最佳答案

在此声明之后

int* ptr = &a; 

指针 ptr 指向对象 a。

取消引用指针

int &x = *ptr;

产生对原始对象 a 的左值引用,

所以 x 现在是对对象 a 的左值引用。

效果与您最初编写的效果相同
int &x = a;

来自 C++ 标准(5.3.1 一元运算符)

1 The unary * operator performs indirection: the expression to which it is applied shall be a pointer to an object type, or a pointer to a function type and the result is an lvalue referring to the object or function to which the expression points.

关于c++ - 用于初始化引用的指针引用的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61385117/

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