引用函数

本文介绍了C++中的引用,它作为变量的别名,必须在声明时初始化且不能更改。引用用于函数参数,提供了一种更清晰的语法。与指针相比,引用在创建时必须初始化,不能为空,且一旦关联目标对象就不再改变。引用不占内存,不支持引用的引用,而指针可以为空,可以改变指向。引用和指针在功能上相似,但在定义和使用上存在显著差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

#include<iostream>
using namespace std;
int main(){
   int intOne=0;
   int&rint=intOne;
   
   intOne=5;
   
   cout<<intOne<<endl;
   cout<<rint<<endl;
   
   rint=7;
   
   cout<<intOne<<endl;
   cout<<rint<<endl; 

       cout<<&(intOne)<<endl;//17 18用于检验intOne和rint的地址,结果两者地址是相同的 
   cout<<&(rint)<<endl; 
return 0;
}
using namespace std;
int main(){
   int intOne=0;
   int&rint=intOne;
   
   intOne=5;
   
   cout<<intOne<<endl;
   cout<<rint<<endl;
   
   rint=7;
   
   cout<<intOne<<endl;
   cout<<rint<<endl; 

       cout<<&(intOne)<<endl;//17 18用于检验intOne和rint的地址,结果两者地址是相同的 
   cout<<&(rint)<<endl; 
return 0;
}
“&”只有在声明引用时候才是引用运算符,其他时候都是地址操作符

引用和变量指向同一个存储单元

 引用一旦初始化,他就维系在一定的目标上,再也不分开

 

引用的概念

引用是别名,在声明时必须初始化,在实际代码中主要作函数的形式函数

为了建立引用,先写上目标的类型,再加上引用运算符“&”,然后是引用的名字

指针是变量 可以把它赋值成指向别处的地址

建立引用时必须初始化(如上int intOne=0)并且绝不会在关联其他不同的变量

 

注意事项:1、void引用是不合法的

2、数组没有引用

3、没有引用的指针和引用的引用

4、有空指针但是无空引用

 传递引用给函数与传递指针效果一样

 用引用作为参数比使用指针有更清晰的语法

 

Eg.

 

void swap(int&x,int&y)//引用作为参数
Void swap(int&x,int&y)//函数实现几乎和原来一样
{
  int temp;
  temp=x;
  x=y;
  y=temp;
}
Void swap(int *x,int*y)//定义指针的函数参数
{
  int temp;
  temp=x;
  x=y;
  y=temp;
}

以上的两种交换,在主函数中变量的原地址不会发生改变。

2021.3.20补充

引用和指针作为函数参数都可以完成相同的功能,但是引用和指针在定义和使用上有根本的区别;

(1)引用创建时必须被初始化,而指针定义时可以被初始化,也可以不被初始化。

(2)引用一旦被初始化与某个对象建立了关联,在其生命期不能再引用其他对象;而指针可以任何时候转而指向其他对象的地址

(3)不允许存在空引用,引用创建时必须与某个具有有效内存空间的对象建立关联;c++允许存在空指针。

(4)引用是与地址间接产生联系;指针变量的内容就是地址,与地址直接产生联系。

(5)引用不占内存空间,指针占用内存空间。

(6)不存在引用的引用,指针可以有引用。

例如

int *p;//定义指针变量p
int * &rp=p;//创建p的引用rp,ro也是指针类型
int m=10;//定义int变量m
rp = &m;//rp存储m的地址

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值