指针与引用, 值传递与地址传递的关系

前言

“引用”的这个词我到经常使用到,但是它经常是作为动词出现的,而作为名词,我却很少用到。这个上次面试就问我指针和引用的区别,我就有点蒙圈了,因为对“引用”这个词确实不了解,然后面试官又问我知不知道值传递和地址传递,我差点拍案而起,心里想问我这个问题,是不是有点太简单了,然后回答的是:“值传递就是把变量的值直接传递给函数,在函数中可以使用但是无法修改原来的实参的值,而地址传递则是将变量的地址传递给函数形参,在函数中可以通过形参指针直接访问到变量所在的内存从而可以修改实参的值”。 后来面试官也没说什么。。。我一直认为“值传递”传递的变量的值,“地址传递”传递的变量的地址。 多好的逻辑,还很合理、顺口。 但是对于“引用”这个概念确实不了解,然后就是网上查资料,一查吓一跳啊,发现自己真的理解错了,特写一下笔记纪念下。

函数传递参数的两种方式: 值传递和地址传递

1. 引用的定义

首先,引用是C++语言对C语言的一个重要补充,而C语言中是不包含“引用”的。
我们可以对一个数据建立一个“引用”; 它的作用是为变量起一个别名。
例如,有个变量a,我们通过引用给a起一个别名:
int a = 10;
int &b = a;
则b可以成为变量a的一个引用。
此时:b = 10;
&b = &a; //变量a与他的引用的地址一样

而使用指针的话:
int *p = &a; //&:取地址
此时 *p = 10; // 因为p存储的是a的地址,所以p指向a,

2. 引用的注意事项:

1) 引用不是一种独立的数据类型,对引用只能声明,不能定义。 只能先定义一个变量,然后在声明对该变量的一个引用(起个别名)。
2) 声明一个引用时,必须同时对他进行初始化,即表明它代表那个变量。
3) 在声明一个引用后,不能再是指作为另一个变量的引用。只能初始化

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叨陪鲤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值