C++ 引用(别名)

C++中的引用

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

引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是c++对c语言的重要扩充。引用就是某

一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。其格式为:类型 &引用变量名 = 已定义过的变量名。

引用的特点:

  ①一个变量可取多个别名。

  ②引用必须初始化,只有别名是不能成立的。

  ③引用只能在初始化的时候引用一次 ,不能更改为转而引用其他变量。

C++ 引用 vs 指针

引用很容易与指针混淆,它们之间有三个主要的不同:

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

1、基础数据类型引用:

#include 
#include 
using namespace std;

int main(void)
{
    int a=10;
    int &b=a;    // 给a起一个别名b
    
    b=20;        // 对b操作和对a操作效果是一样的
    cout << a <<endl;

    a=30;
    cout << b << endl;

    system("pause");
    return 0;
} 

 运行结果:20   30

2、结构体类型的引用

#include 
#include 
using namespace std;

typedef struct // 定义一个结构体
{
    int x;
    int y;
}Coord; // 结构体的名字

int main(void)
{
    Coord c;
    Coord &c1 = c; // 给c起一个别名c1

    c1.x = 10;   // 对c1操作相当于对c操作
    c1.y = 20;

    cout << c.x << "," << c.y << endl;

    system("pause");
    return 0;
}

运行结果:

3、指针类型的引用:

格式:类型  *&指针引用名 = 指针简而言之:给地址起一个别名

#include 
#include 
using namespace std;

int main(void)
{
    int  a = 3;
    int *p = &a;
    int *&q = p;

    cout << p << endl;  //  P = 0093FC60
    cout << &q << endl; // &q = 0093FC54
    cout << *&q << endl;//*&q = 0093FC60

    *q = 5;
    cout << a << endl;

    system("pause");
    return 0;
}

运行结果:

C++ 引用(别名)_第1张图片

4、函数参数引用:

以前我们在C语言中交换a,b的位置时:

void fun(int *a,int *b)
{
    int c;
    c  = *a;
    *a = *b;
    *b = c;
}

调用的时候我们需要吧参数的地址传进去:

int x =10,y = 20;
fun(&x,&y);

而当我们引入了引用,事情就方便多了

void fun(int &a,int &b) // 形参就是引用别名
{
    int c = 0;
    c = a;
    a = b; // a和b都是以别名形式进行交换
    b = c;
}

调用传参

int x =10,y = 20;
fun(x,y);

代码示例:

#include 
#include 
using namespace std;

void fun(int &a,int &b)

int main(void)
{
    int x =10;
    int y =20;
    cout << x << "," << y << endl;

    fun(x,y);
    cout << x << "," << y << endl;

    system("pause");
    return 0;
}

void fun(int &a,int &b)
{
    int c = 0;
    c = a;
    a = b;
    b = c;
}

输出结果:

 

转载于:https://www.cnblogs.com/chuijingjing/p/9009293.html

你可能感兴趣的:(C++ 引用(别名))