栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构中形参*和*&的区别-c++的引用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构中形参*和*&的区别-c++的引用

形参&的区别 1、要想知道他们之间的区别,我们必须首先知道c++中引用是什么 首先,定义
int main()
{
	int a=10;
	int &b =a;
 //其含义就是将a和b指向同一个内存空间,不管改编a还是b都将互相影响
	printf("%d,%d",a,b);
}

运行结果:

其次,调用
int main()
{
	int a=10;
	int &b =a;
	b=5;//同时改变,我们就可以大胆推测,a和b都是同一个地址,b只是一个别名
	printf("%d,%d",a,b);
}

运行结果:

综上
  1. 目的:在引用的使用中,单纯给某个变量去别名是毫无意义的,引用的目的主要用于在函数参数的传递中,解决大块数据或对象的传递效率和空间不如意的问题

  2. 特点1:用引用传递函数的参数,能保证参数在传递的过程中不产生副本,从而提高传递效率,同时通过const的使用,还可以保证参数在传递过程中的安全性

  3. 特点2:引用本身是目标变量或对象的别名,对引用的操作本质上就是对目标变量或对象的操作。因此能使用引用时尽量使用引用而非指针

2、 形参*和*&的区别 简单运用引用进行交换
void exchange(int &p1 ,int &p2){

int a =p1;
	p1=p2;
	p2=a;

}
int main()
{
	int a=10;
	int b =15;
	
	printf("before %d,%d",a,b);
	exchange(a,b);//能够实现交换
	printf("later %d,%d",a,b);
}

结果:

“参数*和*&的区别”

指针传递参数和指针引用传递参数

#include 
using namespace std;
void fun1(int *p){
p++;
}
void fun2(int *&p){
p++;
}
int main()
{
	int b[3] ={1,2,3};
	int *p=b;
	fun1(p);//简单的指针传递,将指针位置加1
	printf("fun1 *p = %d",*p);
	fun2(p);//使用指针引用传递,将指针位置加1
	printf("fun2 *p = %d",*p);
}

结果:

惊讶的是指针引用传递,他把mian函数中的p的值也改变了,等同于fun2函数中p与main函数中的p是同一个内存空间,改变了p的值。即可改变p指向的值,也可以改变p的值

3、综上,有几点想要说明一下 为什么我们要采用引用的方式

1. 相比于指针,引用的方式可以像一般变量一样的操作即可,使用极其方便
2. 效率方面,更加快捷,大大加快了

实质

1. 引用等价于两个变量有相同的地址
2. 引用仅仅是一个别名

最后,参考来源于:

https://www.cnblogs.com/duwenxing/p/7421100.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676047.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号