首页 > 其他 > 详细

指针与引用的区别

时间:2020-06-11 12:26:48      阅读:34      评论:0      收藏:0      [点我收藏+]

指针&引用

指针里面的值存放的是另一个参数的地址,需要"解引用",也就是用*来取该参数的值,而引用实际上就是另一个参数的别名,这个引用的地址和另一个参数的地址实际上是一样的,代码如下:

//Pointer
#include<iostream>
using namespace std;
void swap(int* x, int* y)
{
	int temp;
	temp = *x;
	*x = *y;
	*y = temp;
}

int main()
{
	int a, b;
	cin >> a >> b;
	cout << "Before Swap: a = " << a << " " << "b = " << b << endl;
	cout << "Before Swap : a = " << a << " " << "b = " << b << endl;
	swap(&a, &b);
	cout << "After Swap: a = " << a << " " << "b = " << b << endl;
	cout << "After Swap : a = " << a << " " << "b = " << b << endl;
	return 0;
}


技术分享图片

可以看到,这里面x的值实际上就是实参a的地址,进行交换后

技术分享图片

直接就将实参a的值改成6,这里a没有变化的原因是没有点右边的更新,实际上实参a根本就不在swap函数里面,更新之后是下面的样子:

技术分享图片

引用的代码如下:

//Reference
#include<iostream>
using namespace std;
void swap(int& x, int& y)
{
	int temp;
	temp = x;
	x = y;
	y = temp;
}

int main()
{
	int a, b;
	cin >> a >> b;
	cout << "Before Swap: a = " << a << " " << "b = " << b << endl;
	cout << "Before Swap : a = " << a << " " << "b = " << b << endl;
	swap(a, b);
	cout << "After Swap: a = " << a << " " << "b = " << b << endl;
	cout << "After Swap : a = " << a << " " << "b = " << b << endl;
	return 0;
}

在引用中形参x的地址和值和实参a一模一样

技术分享图片

交换之后,发现形参x的地址和值和实参a还是一样的:

技术分享图片

指针与引用的区别

原文:https://www.cnblogs.com/K2MnO4/p/13091753.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!