引用与const

C++引用简介:

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

引用就是某一变量的一个别名,对引用的操作与对变量直接操作完全一样。

引用的声明方法:类型标识符 &引用名=目标遍历名

实例说明:

        int a;
        int &p_a=a;

注:(1):&在此不是求址运算,而是起标识作用。

(2):类型标识符是指目标变量的类型。

(3):声明引用,必须对其进程初始化。

(4):引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。

(5):声明一个引用,不是定义了一个变量,只是表示该引用名是变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储空间,系统也不给引用分配存储单元。故:对引用取地址,就是对该引用的目标变量就地址。

(6):不能建立数组的引用。因为数组是一个由若干个元素组成的集合,所以无法建立



一个数组的别名。

注:

例:int &p_a[3]={2,3,5};

但是可以这么写:const int (&p_a)[3]={2,3,5};但是GCC编译时要加上-std=c++0x

引用本质剖析:

引用其实就是C++中的常量指针。表达式 int &i=j => int *const i=&j;而引用之所以要初始化时因为const类型的变量必须初始化,这个而指针必须有所值。

         int main()
         {
             int i=10;
             int &j=i;
             j++;
             cout<<i<<j<<endl;
             cout<<&i<<&j<<endl;
             return 0;
         }

    下面来看这段代码:

        int main()
        {
            int i=10;
            int *const j=&i;
            (*j)++;
            cout<<i<<*j<<endl;
            return 0;
        }

    打印时会跳过打印地址这一步。这需要一些解释。因为引用变量时会被编译器自动解引用。

时间: 2024-10-07 08:36:37

引用与const的相关文章

C++primer: 引用&amp;与 const 引用

1.什么是引用? 引用就是对象的另外一个名字.在实际程序中,引用主要用作函数的形式参数. 引用是一种复合类型,通过在变量名前面添加"&"符号来定义.复合类型是指用其他类型定义的类型.在引用的情况下,每一种引用类型都"关联到"某一其他类型.不能定义引用类型的引用,但是可以定义任何其他类型的引用. 引用必须用与该引用同类型的对象初始化: int ival = 1024; int& refVal = ival;// ok:refVal refer to i

引用和const的一些

一,引用:某个变量的引用等价于这个变量,是这个变量的一个别名. #include<iostream> int main() { int a=2,b=1; int &c=a;//(1)定义引用时一定要初始化 c=3; std::cout<<a<<std::endl; c=b; //此时并不是c引用了b而是c(实际上是a变量的值)的值变为了b变量的值,并不能改变c的引用 //(2)引用一经初始化就不会再引用其他的变量了. std::cout<<a<

C++ Primer 第二章 引用 指针 const限定符

1.引用: 为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d也就是声明的变量名(声明符就是变量名). PS:1.通过图片中编译所提示的报错信息也可知,引用必须被初始化: 2.引用并非对象,相反的,它只是为一个已经存在的对象所起的另一个名字而已: 2.指针: 与引用类似,指针也实现了对其他对象的间接访问,不过,指针本身就是一个对象,允许对指针赋值与拷贝,而且在其生命周期内可以先后指向几个不同的对象(引用只能指向一个初始化的). 指针无须再定义时赋初

C++ Primer 学习笔记_17_从C到C++(3)--引用、const引用、引用传递、引用作为函数返回值、引用与指针区别

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢 一.引用 1.引用是给一个变量起别名 变量: 名称 空间 引用: 引用不是变量 引用仅仅是变量的别名 引用没有自己独立的空间 引用要与它所引用的变量共享空间 对引用所做的改变实际上是对它所引用的变量的改变 引用在定义的时候必须要进行初始化 引用一经初始化,不能重新指向其他变量 2.定义引用的一般格式: (1)类型  &引用名 = 变量名: (2)例如: int a=1; int &b=a; // b是a的别名,因此a和b是同一个单元 (3)

C++指针、引用、const

int a = 3; int *p = &a; //定义指针p指向变量a *p = 4; //*p代表a的值 int b = 5; p = &b; //p指向变量b *p = 6; //此时*p代表b的值 int c[3] = {2,5,7}; p = c; //此时p是指向数组c的指针,具体指向数组的第一个元素,即(&c[0]/p/c)三种写法等价 int a = 3; int &b = a; //定义引用b为变量a的引用,即a的别名(可理解为a的"外号&quo

让你彻底弄懂指针、引用与const

今天重温了一下C++ Primer,对上面三个概念有了更清晰的认识,自我认为已经有了比较全面的理解了,所以赶紧记录下来,也请大家批评指正. 1.引用 引用,简单来说就是为对象起了一个别名,可以用别名来等同于操作对象,通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名,即引用变量的别名: int i =1; int &r = i; //r指向i(r是i的别名,可以通过操作r来改变i的值). r=2; cout<<r<<" "<&l

c++(4)----指针和引用、const

指针和引用都是一种复合类型. 复合类型: 基于其他类型定义的类型 基本数据类型+声明符 引用并非对象,而是一个别名,定义时必须初始化 // 引用并非对象,而是一个别名 int ival =1024; int &refVal = ival; // refVal 指向ival(是ival的另一个名称) int &refVal2; //报错:引用必须被初始化 int i =1024, i2=2048; int &r=i, r2=i2; //r是一个引用:r2 是 int int &

关于C++指针、引用和const关键字的各种关系

const int x1=0;//常量写法1 int const x2=0;//常量写法2 int x3=0; int * const p1=&x3;//指针常量(指针类型的常量,对象是指针类型的,指针本身是常量,顶层const) const int* p2=&x1;//指向常量的指针(指针本身是变量,指向的数据是常量,底层const) const int* const p4=&x1;//指向常量的指针常量(顶层+底层const) const new_type p5=&x3

C++ Primer 学习笔记_19_类与数据抽象(5)_初始化列表(const和引用成员)、拷贝构造函数

C++ Primer 学习笔记_19_类与数据抽象(5)_初始化列表(const和引用成员).拷贝构造函数  从概念上将,可以认为构造函数分为两个阶段执行: 1)初始化阶段: 2)普通的计算阶段.计算阶段由构造函数函数体中的所有语句组成. 一.构造函数初始化列表 推荐在构造函数初始化列表中进行初始化 1.对象成员及其初始化 <span style="font-size:14px;">#include <iostream> using namespace std;