#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
int a=10;
int &b=a;//此处为c和c++之间的一个不同的地方,&在C语言当中是取地址符的含义但是在C++当中则是引用的含义 ,即在对b进行操作时,实际上是在对a进行操作,即相当于b是a的一个
//别名,b和a代表的是同一块相同的地址空间
cout<<"对变量a进行输出操作:a="<<a<<endl;
b=20;//通过a的别名b来对a所代表的内存空间当中的数据进行修改操作
cout<<"经过别名修改之后的a="<<a<<endl;
a=30;
cout<<"对a进行修改操作之后,同过其别名来对变量a当中的内容进行输出操作:b="<<b<<endl;
}
//指针时开辟一块内存空间来存放指定变量的地址,而别名则是直接指向指定变量的,&(b)则是指向变量的地址,所以变量a和别名b将处于等同的地位
#include<iostream>
using namespace std;
typedef struct
{
int x;
int y;
}Coord;
int main()
{
Coord c;//声明一个结构体变量
Coord &c1=c;//建立结构体变量c的别名,使得c1变量引用c
c1.x=10;
c1.y=20;
cout<<"x="<<c.x<<endl;
cout<<"y="<<c.y<<endl;
//-------------------------------------------------------------------------------
int a=3;
int *p=&a;//建立一个指针p另指针p指向a
int *&q=p;//q是一个指针变量,所以要加*,q是指针p的一个别名所以为&q=p,*(&q)则表明当前别名变量时一个指针变量,所以*q与*p二者之间将是等价的
cout<<"*p="<<*p<<endl;
*q=5;
cout<<"*p="<<*p<<endl;
}
#include<iostream>
using namespace std;
void swap(int &x,int &y);
int main()
{
int x,y;
x=10;
y=20;
cout<<"交换之前:x="<<x<<",y="<<y<<endl;
swap(x,y);//此处在进行参数的传递的时候相当于进行了别名的定义操作 &a=x,&b=y,即另a=x然后对a进行引用操作
cout<<"交换之后:x="<<x<<",y="<<y<<endl;
}
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}