《引用的相关学习》

今天学习了引用的方法
“&” 表示应用的操作
出现在的位置确定它的作用和意思
先看一下优先级的
在这里插入图片描述

具体过程在下面代码中展示

#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;
}```

发布了18 篇原创文章 · 获赞 8 · 访问量 436

猜你喜欢

转载自blog.csdn.net/weixin_45540964/article/details/104028985
今日推荐