【C++】引用变量--1.如何创建引用变量

举报
王博Kings 发表于 2020/12/29 23:04:54 2020/12/29
【摘要】 目录 引用变量 1.1 创建引用变量 引用变量的程序示例 程序运行结果 引用变量 引用是对已定义的变量的别名,比如一个人的大名和小名,这指的都是一个人。区别指针与引用变量 1.1 创建引用变量 比如要将rodents作为rats变量的别名,可以这样做: int rats; int & rodents =rats;  注意,&这里不是地址运算...

目录

引用变量

1.1 创建引用变量

引用变量的程序示例

程序运行结果


引用变量

引用是对已定义的变量的别名,比如一个人的大名和小名,这指的都是一个人。区别指针与引用变量

1.1 创建引用变量

比如要将rodents作为rats变量的别名,可以这样做:

int rats;

int & rodents =rats;

 注意,&这里不是地址运算符,而是类型标识符一部分,int & 指的是指向int 的引用

引用变量的程序示例


  
  1. //firstref.cpp -- defining and using a reference
  2. //引用
  3. #include<iostream>
  4. int main()
  5. {
  6. using namespace std;
  7. int rats = 101;
  8. int & rodents = rats;//rodents这里是rats的引用
  9. cout << "--------------------" << endl;
  10. cout << "原始的" << endl;
  11. cout << "rats = " << rats;
  12. cout << ", rodents = " << rodents << endl;
  13. cout << "--------------------" << endl;
  14. cout << "rodents++后的" << endl;
  15. rodents++;
  16. cout << "rats = " << rats;
  17. cout << ", rodents = " << rodents << endl;
  18. cout << "--------------------" << endl;
  19. cout << "显示其地址" << endl;
  20. cout << "rats address = " << &rats;
  21. cout << ", rodents address = " << &rodents << endl;
  22. return 0;
  23. }

程序运行结果

必须在声明引用变量时进行初始化,这点和指针不一样

如果非要拉上关系,引用更接近const指针,必须在创建时进行初始化,一旦关联,就一直效忠。

int & rodents =rats;

实际上是下述代码的伪装

int * const pr = &rats;

试图将变量的引用改变的程序示例


  
  1. // secref.cpp -- defining and using a reference
  2. #include<iostream>
  3. int main()
  4. {
  5. using namespace std;
  6. int rats = 101;
  7. int & rodents = rats; //引用
  8. cout << "--------------------" << endl;
  9. cout << "原始的" << endl;
  10. cout << "rats = " << rats;
  11. cout << ", rodents = " << rodents << endl << endl;
  12. cout << "--------------------" << endl;
  13. cout << "显示其原始地址" << endl;
  14. cout << "rats address = " << &rats;
  15. cout << ", rodents address = " << &rodents << endl << endl;
  16. int bunnies = 50;
  17. rodents = bunnies;//这里可以改变引用吗?
  18. cout << "--------------------" << endl;
  19. cout << "观测是否发生了改变" << endl;
  20. cout << "bunnies = " << bunnies;
  21. cout << ", rats = " << rats;
  22. cout << ", rodents = " << rodents << endl << endl;
  23. cout << "--------------------" << endl;
  24. cout << "显示其现在的地址" << endl;
  25. cout << "bunnies address = " << &bunnies;
  26. cout << ", rodents address = " << &rodents << endl << endl;
  27. return 0;
  28. }

咋一看,改变成功了,但是发现bunnies地址与rats和rodents的地址并不同,这是因为上述语句等效于:

rats = bunnies;

也就意味着可以通过初始化声明来设置引用,但不能通过赋值来设置。

文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。

原文链接:kings.blog.csdn.net/article/details/90436997

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。