新闻资讯
看你所看,想你所想

引用变量

引用变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,引用变量通常是可变的;但在纯函数式语言中,绍留但信试整岁很饭变量可能是不可变的。

  • 中文名称 引用变量
  • 使用说明 起标识作用的运算地址
  • 使用原则 数据对象小、按值传递
  • 定义 最多用处就是作为函数的参数

定义

  ⒈pt 是引用变量,申明引用变量时必须将其初始化.p来自t 和rate 的值指向相同的内存变量. 引用的最多用处就是作为函数的阶低每参数(结构和对象).通过引用变量作参数可以是函数使用原始数据.而不是拷贝.

  ⒉引用的特点更接近于const 指针,一旦与某个变量关联起来就将一直效忠于它,可以通过初始化来设置引用,但到机候古陈庆长问独育会是不能通过赋值来设置

  此时,rate的值和 pt的值都改为了30 但是地址还是原来rate的地址.而不是other的地址.

  ⒊如果程序不想改变传递给它的信息,但是又想使用引空香费步心排编部用,那么则应该使用常360百科量引用

  ⒋如果实参和应用参数不匹配,c++将为此产生临时变量,这个只有在参数为co序河时nst 引用时才允许这么做,在下列情况下生成临时变量认模止宗厂顺,并且函数参数将引用该变量.

  ****当参数范开易保称并工助奏虽不是const引用时,如果不是左值(又无法生成临时变量)将导致编译错误*****双岩获条假否吧(强调了第三点,即尽量用const)

  .实参的类型正确,但是不是左值

  .实参类型不正确,但是可以转化为正确类型

  左值概念:除了字面常量和包含多项式的认还节帮三台州树沉表达式可以被引用的数据对

  ⒌尽量将函数返回的引用声明为const,避免你通过返回的引用而修改它的值.返回引用其实是返回被引用变量的别名

  相当于

  ⒍继承的特征就是基类的引用可以指向派生类对象,而无需强制类型转化.这种好处是可以定义一个铁苗下海级构织标接受基类引用座位参数的函数,调用函数是既可以将基类对象作为参数,也可以将派生类作为参数

  如果

 身起卫取正积依械过们某 表示的是地址为0,而不是引用的意思,声明诉画慢肉州之直果中有变量赋值的情况,必须把变量弦弱装目旧范盐止六难作为引用的对象,要不然系统无法识别你的语句是引用还是赋值!

使用说明

  如果int &ir=0,表示的是地址为0,而不是引用的意思,声明中有变量赋值的情况,必须把变量作为引用的对象,要不然系统无法识别你的语句是引用还是赋值!

  ⑴&;在此不是求地址运算,而是起标识作用。

  ⑵类型标识符是指目标变量的类型。

  ⑶声明引用时,必须同时对其进行初始化。

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

  ra=1; 等价于 a=1;

  ⑸声明一个引用,不是新响目继九女针黑二坚都音定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种宽训降迅据甚数据类型,因此引亮室万正红裂笔众丰川用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。

  ⑹ 可以建立数组的引用,C++中解决速乡路汽数组做形参的降价问题就是通过使用数组的引用

  逐奏宣探星力由预烧⑺不能建立引用的引用,不能建立指向引用的指针。因为引用不是一种数据类型,所以没有引用的引用,没有引用的指针。

  例如:

  int n;

  int &&r=n;//错误,编译系统把"int &"看成一体,把"&r"看成一体,即建立了引用的引用,引用的对象应当是某种数据类型的变量

  int &*p=n;//错误,编译系统把"int &"看成一体,把" *p "看成一体,即建立了指向引用的指针,指针只能指向某种数据类型的变量

  ⑻值得一提的是,可以建立指针的引用

  例如:

  int *p;

  int *&q=p;//正确,编译系统把" int * "看成一体,把"&q"看成一体,即建立指针p的引用,亦即给指针p起别名q。

使用原则

  对于按值传递而不修改的函数时:

  .数据对象小,按值传递

  .数据对象是数组,则定义const 的来自指针

  .如果数据对象为较大的结构,则可以使用const 指针或者cosnt 引用,

  .如果是类对象,则使用const 引用.

  对于修改值的函数

  .如果是内置数据,则使用指针

  .数组,也只哥脚讲停学析能使用指针

  .结构 使用指针或者引用

  .对象.使用引用

转载请注明出处累积网 » 引用变量

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com