今天学习了引用的方法
“&” 表示应用的操作
出现在的位置确定它的作用和意思
先看一下优先级的
具体过程在下面代码中展示
#include<iostream>
#include<string.h>
//using namespace std;
int main()
{
//using std::cout;
//using std::endl;
/* int a=1;
int b=11;
int &c=a;//&在这里不是取地址而是引用
//变量a的引用,也可以叫a的别名
int &d=c;//同一个变量可以多个引用
//引用和指针不同,引用的变量完全指向同一
//块区间
std::cout<<d<<" "<<c<<std::endl;
getchar();
c=2;
d=3;
int *m=&a;
int **n=&m;
**n=1;
std::cout<<a<<" "<<m<<" "<<n<<std::endl;//指针和引用一定的区别
getchar();
c=b;//这次是赋值,并不是新的引用
//而a,c,d都将改变
int *p=&a;
int* &q=p;//可以对指针进行引用
//注意这里也可以写成 int * (&q)=p;
//由于符合优先级的问题 以及具有向右的先结合性,可以不加括号
*q=22;
std::cout<<a<<" "<<p<<" "<<q<<std::endl;//&c的&是取它的地址
//对常量进行引用
const int &x=12;
//int x=13常量的引用不能进行常量的操作,不能改变值
std::cout<<x<<" "<<&x<<std::endl;
//对数组的引用
int aa[5]={1,2,3,4,5};
int (&bb)[5]=aa;//数组的引用写法
bb[2]=5;
aa[3]=5;
for(int i=0;i<5;i++)
{
std::cout<<aa[i]<<std::endl;
std::cout<<bb[i]<<std::endl;
}
//对维数组的引用也是一样的
int cc[2][3];
int (&dd)[2][3]=cc;*/
//结构体的引用与一般变量比较相像
struct data
{
int a;
};
struct data da;
da.a=1;
struct data &db=da;//类型的引用
db.a=2;
std::cout<<da.a<<std::endl;
struct data *dc;
dc=new struct data;
dc->a=3;
struct data* &dd=dc;
dd->a=4;
std::cout<<dc->a<<std::endl;
}```