首页 > 后端开发 > C++ > C 引用是否可以重新分配,或者只是值修改?

C 引用是否可以重新分配,或者只是值修改?

Barbara Streisand
发布: 2024-12-05 01:34:11
原创
741 人浏览过

Can C   References Be Reassigned, or is it Just Value Modification?

C 中的引用重新分配

C 中声明引用需要初始化,给人一种引用是不可变且无法重新分配的印象。但是,请考虑以下程序:

#include <iostream>

using namespace std;

int main() {
    int i = 5, j = 9;

    int &ri = i;
    cout << "ri is : " << ri << '\n';
    i = 10;
    cout << "ri is : " << ri << '\n';
    ri = j; // Is this not reassigning the reference?
    cout << "ri is : " << ri << '\n';
    return 0;
}
登录后复制

代码成功编译并生成预期输出:

ri is : 5
ri is : 10
ri is : 9
登录后复制

与流行的看法相反,行 ri = j 不会重新分配引用里。相反,它通过引用 ri 修改 i 的值,如在该行之前和之后打印 i 所证明的那样。这种行为得到了以下事实的支持:&ri 和 &i 打印相同的地址,表明 ri 仍然是对 i 的引用。

相反,声明常量引用 (const int &cri = i) 可防止重新分配引用本身。

以上是C 引用是否可以重新分配,或者只是值修改?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板