第一篇 理解“引用初始化以后不能被改变 指针可以改变所指的对象”这句话

       基础的东西经常不看,也会忘,在看到“引用初始化以后不能被改变 指针可以改变所指的对象”这句话时就理解错了,写下来巩固下。


       此处说的“引用初始化以后不能被改变”不是指变量的值不可变,而是指向的变量地址不可变。这个得再去理解下引用的定义。


1.定义回顾

       引用——引用就是某一变量(对象)的一个别名,对引用的操作与对变量直接操作完全一样。

                       作为目标变量的别名,对引用的任何操作都等价于对目标变量的操作,同时,声明一个引用,并不是新定义了一个变量,只表示该引用名是目标变量名的一个别名,   因此引用本身不占存储单元,编译器不会给引用分配存储单元。所以对引用的取地址,返回结果即是目标变量的内存地址。



2.代码

int num1 = 10;
	int num2 = 100;

	int &hnum = num1;
	int *pnum = &num1;
	
	cout<<"num1="<<num1<<",&num1="<<&num1<<endl;
	cout<<"hunm="<<hnum<<",&hnum="<<&hnum<<endl;
	cout<<"*pnum="<<*pnum<<",pnum="<<pnum<<endl;
	
	hnum = num2;
	pnum = &num2;

	cout<<"num1="<<num1<<",&num1="<<&num1<<endl;
	cout<<"hunm="<<hnum<<",&hnum="<<&hnum<<endl;
	cout<<"*pnum="<<*pnum<<",pnum="<<pnum<<endl;



3.截图结果


4.一道面试题

string s1(\"Nancy\");
string s2(\"Clancy\");

string& rs = s1; // rs 引用 s1
string *ps = &s1; // ps 指向 s1
rs = s2; // rs 仍旧引用s1
     // 但是 s1的值现在是\"Clancy\"

ps = &s2; // ps 现在指向 s2;// s1 没有改变


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值