【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 的引用

引用变量的程序示例


      //firstref.cpp -- defining and using a reference
      //引用
      #include<iostream>
      int main()
      {
     	using namespace std;
     	int rats = 101;
     	int & rodents = rats;//rodents这里是rats的引用
     	cout << "--------------------" << endl;
     	cout << "原始的" << endl;
     	cout << "rats = " << rats;
     	cout << ", rodents = " << rodents << endl;
     	cout << "--------------------" << endl;
     	cout << "rodents++后的" << endl;
      	rodents++;
     	cout << "rats = " << rats;
     	cout << ", rodents = " << rodents << endl;
     	cout << "--------------------" << endl;
     	cout << "显示其地址" << endl;
     	cout << "rats address = " << &rats;
     	cout << ", rodents address = " << &rodents << endl;
     	return 0;
      }
  
 

程序运行结果

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

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

int & rodents =rats;

实际上是下述代码的伪装

int * const pr = &rats;

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


      // secref.cpp -- defining and using a reference
      #include<iostream>
      int main()
      {
     	using namespace std;
     	int rats = 101;
     	int & rodents = rats; //引用
     	cout << "--------------------" << endl;
     	cout << "原始的" << endl;
     	cout << "rats = " << rats;
     	cout << ", rodents = " << rodents << endl << endl;
     	cout << "--------------------" << endl;
     	cout << "显示其原始地址" << endl;
     	cout << "rats address = " << &rats;
     	cout << ", rodents address = " << &rodents << endl << endl;
     	int bunnies = 50;
      	rodents = bunnies;//这里可以改变引用吗?
     	cout << "--------------------" << endl;
     	cout << "观测是否发生了改变" << endl;
     	cout << "bunnies = " << bunnies;
     	cout << ", rats = " << rats;
     	cout << ", rodents = " << rodents << endl << endl;
     	cout << "--------------------" << endl;
     	cout << "显示其现在的地址" << endl;
     	cout << "bunnies address = " << &bunnies;
     	cout << ", rodents address = " << &rodents << endl << endl;
     	return 0;
      }
  
 

咋一看,改变成功了,但是发现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个月内不可修改。