c++引用

目录

简介: 

那么指针和引用的区别在哪呢?

引用的创建和使用

引用在c++中通常这样创建:

基本使用示例:

引用常使用在函数参数列表和函数返回值

函数参数列表:

函数返回值:

结语:


简介: 

引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。

总结一下就是:

引用相当于已存在变量的另一个名字

例如:

int a;

int &i=a;

那么意味着对i进行操作相当于对a进行操作

这里的功能看着有点像指针是吧?其实他们很容易混淆概念

那么指针和引用的区别在哪呢?

  • 不存在空引用,引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化,指针可以在任何时间被初始化。

引用的创建和使用

引用在c++中通常这样创建:

基本使用示例:

#include 
using namespace std;
 
int main ()
{
   // 声明简单的变量
   int    a;
   double b;
 
   // 声明引用变量
   int&    m = a;
   double& n = b;
   
   a= 5;
   cout << a << endl;
   cout << m << endl;
 
   b = 4.9;
   cout << b << endl;
   cout << n  << endl;
   
   return 0;
}

输出结果当然是:

这里验证了引用其实就是它所初始化的另一个名字,改变引用就能改变本身的值

引用常使用在函数参数列表和函数返回值

函数参数列表:

把引用作为函数参数

#include 
using namespace std;
 
void swap(int& x, int& y);// 函数声明
 
int main ()
{
   int a = 100;
   int b = 200;
 
   cout << "交换前,a 的值:" << a << endl;
   cout << "交换前,b 的值:" << b << endl;
 
   /* 调用函数来交换值 */
   swap(a, b);
 
   cout << "交换后,a 的值:" << a << endl;
   cout << "交换后,b 的值:" << b << endl;
 
   return 0;
}
 
void swap(int& x, int& y)//交换函数定义
{
   int temp;
   temp = x; //保存地址 x 的值 
   x = y;    //把 y 赋值给 x 
   y = temp; //把 x 赋值给 y  
  
   return;
}

函数返回值:

通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护。C++ 函数可以返回一个引用,方式与返回一个指针类似。

当函数返回一个引用时,则返回一个指向返回值的隐式指针

⭐当返回一个引用时,要注意被引用的对象不能超出作用域,所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。

引用示例(源于菜鸟教程):

#include 
 
using namespace std;
 
double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};
 
double& setValues(int i) {  
   double& ref = vals[i];    
   return ref;   // 返回第 i 个元素的引用,ref 是一个引用变量,ref 引用 vals[i]
 
 
}
 
// 要调用上面定义函数的主函数
int main ()
{
 
   cout << "改变前的值" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "vals[" << i << "] = ";
       cout << vals[i] << endl;
   }
 
   setValues(1) = 20.23; // 改变第 2 个元素
   setValues(3) = 70.8;  // 改变第 4 个元素
 
   cout << "改变后的值" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "vals[" << i << "] = ";
       cout << vals[i] << endl;
   }
   return 0;
}

这里最后的结果是:

c++引用_第1张图片

结语:

本文介绍了有关c++引用的知识,注意不要把它和指针弄混淆,欢迎点赞收藏,其他知识欢迎在主页继续学习(´▽`ʃ♡ƪ)

你可能感兴趣的:(c/c++,c++,开发语言)