美文网首页
C++基本语法——const和引用

C++基本语法——const和引用

作者: 三棱镜的世界 | 来源:发表于2020-04-05 20:03 被阅读0次

const关键字

由const修饰的类型只能初始化一次,之后只能读取,不能修改,在java中为final更贴切其本意

const double pi = 3.1415926

引用类型

基本意义

对下面这段代码:

int a = 5;
int &b = a;

设a的地址为0x400000,那么b的准确意义就是,放在0x400000地址上的一个int类型对象。

这里面包括了两重含义:

  • b是一个int类型对象,因此他的使用完全与 int类型对象一样。
  • 这个int类型对象的地址是0x400000,因此从底层来看,它具有指针的一些特性,无论你怎样传递,他都代表放在 0x400000的那个int

引用与指针的差别

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

关于第二点有下列解释:

string str1="a";
string str3="b";
string &str2=str1;
str2=str3;
第二点解释
我们发现对String&型变量赋值,str2=str1使得str2变量作为str1的别名,已经映射了地址OX0030fc4,它不能再映射其它地址

const int&int&

int&映射的地址只能有一次,就是上面的第二点,本质上是一个常量指针,指向的地址不能变,内容可变
const int&是在int&的基础上要求引用地址不能变,内容也不可变

const和指针

int*const p;//读作p为常量,是指针,指向int,所以p为指向int的常量指针, p不可修改
int const *p;//p为指针,指向常量,为int,所以p为指向int常量的指针, *p不可修改
int ** const p;  //p为常量,指向指针,指针指向int,所以p为指向int型指针的常量指针,p不可修改
int const**p;   //p为指针,指向指针,指针指向常量int,所以p为指针,指向一个指向int常量的指针, **p为int,不可修改
int * const *p ;  //p为指针,指向常量,该常量为指针,指向int,所以p为指针,指向一个常量指针,*p为指针,不可修改
int ** const *p;  //p为指针,指向常量,常量为指向指针的指针,p为指针,指向常量型指针的指针,*p为指向指针的指针,不可修改
int * const **p;  //p为指针,指向一个指针1,指针1指向一个常量,常量为指向int的指针,即p为指针,指向一个指向常量指针的指针, **p为指向一个int的指针,不可修改

相关文章

网友评论

      本文标题:C++基本语法——const和引用

      本文链接:https://www.haomeiwen.com/subject/cwkpphtx.html