网站如何做微信支付宝支付宝支付接口,个人网站的设计与制作论文,做电视网站需要多大的服务器,网站显示建设中在C中#xff0c;引用#xff08;reference#xff09;是一个已存在变量的别名#xff08;alias#xff09;。比如鲁讯原名周树人#xff0c;前者就是后者的别名。
一、引用的用法
定义引用时需要用到#xff0c;用法如下#xff1a;
int ival 9527;
int 中引用reference是一个已存在变量的别名alias。比如鲁讯原名周树人前者就是后者的别名。
一、引用的用法
定义引用时需要用到用法如下
int ival 9527;
int refVal ival; // refVal指代ival是ival的另一个名字
二、引用的注意事项
引用是对象的第二个名字像个寄生虫一样寄生在原名之上因此定义时必须要与原名某个已存在的变量绑定下面的定义是错误的
int refVal; // 错误引用在定义时必须要初始化
寄生虫有个特点离开宿主就会完蛋。求生的欲望把引用打造成一个特别忠贞的孩子一旦绑定终身不改再也不能换对象。从这个特性可以推断出引用内部的实现应该是一个常量指针。
前面的int refVal ival;用C语言表示相当于
const int *refVal ival;
三、引用的主要用途
在功能上引用和指针pointer比较相像主要用于函数参数传递。普通的变量是以“传值”的方式传递参数需要将实参的值复制给形参在函数中改变的是形参而不是赋值给形参的实参。这就像我盖了一个和我的房子一模一样房子送给你这个工程量是很大的而且你装修是你的房子。
指针以“传址”的方式传递参数传过去的是地址在函数中是能改变实参的。这就像我把我房子的地址告诉你你按地址找到我家装修的是我的房子。
引用是以“传名”的方式传递参数传过去的是变量的名字在函数中也是能改变实参的。这就像我把我的房子的名字告诉你你一样能找到我的房子。
引用在内部实现上也是用了指针的但是用引用会更方便语法层面引用不需要用获取地址也不需用*访问数据。就像你打车去找福尔摩斯如果说去贝克街221号司机可能要反应一会儿但如果直接说去福尔摩斯家它可能立马反应出他家的位置但不一定知道是贝克街221号。
用最经典的“交换两个变量”来验证三种传递参数方式的区别
#includeiostream
using namespace std;//普通变量传值版
void swap1(int a, int b){int ta;ab;bt;
}//指针传址版
void swap2(int *a, int *b){int t*a;*a*b;*bt;
}//引用传名版
void swap3(int a, int b){int ta;ab;bt;
}int main(){//普通变量传值版int a3, b9;swap1(a, b);printf(%d %d\n, a, b);//指针传址版a3, b9;swap2(a, b);printf(%d %d\n, a, b);//引用传名版a3, b9;swap3(a, b);printf(%d %d\n, a, b);return 0;
}
输出结果 显而易见引用能用实现指针的功能但用起来比指针方便得多。
四、引用与指针的区别
引用的寄生性决定了与指针的区别
①引用在声明时必须初始化而指针不必。
②引用一旦初始化就不能再指向其他对象而指针可以随时改变它所指向的对象。
③不存在空引用但存在空指针。
④引用一旦初始化就可以像普通变量一样使用不需要使操作符*访问数据指针在访问所指向的对象时需要使用操作符*。