函数探幽--引用变量

引用是已定义的变量的别名(另一个名称)。如果将twain作为clement作为变量的引用,则可以交替使用twain和Clemente来表示该变量。

  • 引用变量的主要用途是用作函数的形参。通过将引用变量用作参数,函数将使用原始数据而不是其副本。

创建引用变量

  • 要将rodents作为rats变量的别名

int rats;

int & rodents = rats;

这里的&不是地址运算符,而是类型标识符的一部分。

上述引用声明允许 rats 与 rodents 互换——他们指向相同的值和内存单元。

  • 就像指针的声明中 char * 指的是指向 char 的指针一样,int &指的是指向 int 的的引用。

引用与指针的比较


int rats = 101;

int & rodents = rats;         //共用一个内存空间

int * prats = &rats;

这样,表达式 rodents 和 *prats 都可以和 rats 互换,

表达式&rodents 和 prats 都可以和 &rats互换。

指针与引用的差别:

  • 必须在声明引用时将他初始化,而不能像指针那样,先声明再赋值                     但与const指针类似。一旦与某个变量关联起来就将一直效忠于他。

    • int & rodents = rats ;     可伪装表示为      int * const pr = &rats ;

如果引用声明后再赋值,如下

int rats = 100;

int & rodents = rats ;

int  bunnies=50;

rodent = bunnies;             //编译器不会报错,只是将他当作简单的赋值语句。

输出结果:rats = rodents = bunnies =50;

但是:rats与rodents还是原来的地址               bunnies指向另外一个地址 。

将引用用作函数参数

下面时三种传参方式的声明与调用的对比:

void swapr(int & a,int & b);   //引用传递

void swapp(int * a,int * b);    //指针传递

void swapv(int  a,int  b);          //值传递

swapr(wallet1,wallet2);   //引用传递

swapp(&wallet1,&wallet2);    //指针传递

swapv(wallet1,wallet2);          //值传递

值传递与引用传递代码的表现形式上基本相同      只有引用传递的声明时   类型符不同

指针传递传过去的是地址,函数中的操作也都是对地址进行。

原文地址:https://www.cnblogs.com/gc612/p/9898594.html

时间: 2024-10-05 05:05:15

函数探幽--引用变量的相关文章

函数探幽

函数探幽 内联函数 c++为提高程序运行速度的一项改进. 非内联函数在调用时来回跳跃并记录产生了一定的开销. 内联函数编译器将使用相应的函数代码替换函数调用.无需跳到另一个位置去执行代码. 内联函数运行速度比常规函数稍快,但代价是占用更多内存. 如果程序在10个不同的地方调用同一个内联函数,该程序将包含该函数代码的10个副本. 如果执行函数代码时间比函数调用时间短,则应该使用内联函数. 要使用内联函数需要在函数声明和定义前加上inline关键字. 通常的做法是省略声明,直接定义. 有些函数即使声

C++函数返回引用、非引用以及临时变量的问题

C++中新增了引用类型,所以函数的返回值可以是引用类型.那么就会有人想问 返回引用类型与返回非引用类型有区别吗? 结论是显然的,而且有明显的区别.尤其初学者会很容易绕进去.让我们先看四个函数原型.以int类型来举例 (1) int fun(...) { return ....//后面跟的是一个引用 } 例如:int fun(int &a) { return a; } (2)int fun(...) { return....//后面跟的是一个非引用 } 例如:int  fun(int a) { r

php引用(&)变量引用,函数引用,对象引用和参数引用用法

php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容.与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址 变量的引用 PHP 的引用允许你用两个变量来指向同一个内容 <?$a="ABC";$b =&$a;echo $a;//这里输出:ABCecho $b;//这里输出:ABC$b="EFG";echo $a;//这里$a的值变为EFG 所以输出EFGec

php变量的引用及函数的引用

Php变量的引用及函数的引用放回 变量的引用    $a="ABC";    $b =&$a;    echo $a;//这里输出:ABC    echo $b;//这里输出:ABC    $b="EFG";    echo $a;//这里$a的值变为EFG 所以输出EFG    echo $b;//这里输出EFG 函数的引用返回function &test(){    static $b=0;//申明一个静态工程变量    $b=$b+1;   

C++ primer plus读书笔记——第8章 函数探幽

第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内联函数,需要在: 函数声明前加上关键字inline; 函数定义前加上关键字inline; 3. 程序员请求将函数作为内联函数时,编译器不一定会满足这种需求.它可能认为该函数过大或注意到函数调用了自己(内联函数不能递归). 4. 必须在声明引用变量时进行初始化 int rat = 101; int &

JavaScript的进阶之路(二)函数简介,变量、作用域和内存问题

<h3>ECMAScript中函数不存在函数签名的概念,没有重载</h3><h3>无需指定返回值,可以在任何时候返回任何值.未指定返回值的函数,返回的是一个特殊的undefined值</h3> <script type="text/javascript"> function sayHi(){ console.log("Hi"); }; sayHi(); function sayName(name,age){

引用变量

引用变量是一种特殊类型的变量,将函数形参声明为此种类型的变量,形参将成为原变量的一个引用(而不是拷贝).一个引用变量的实质是另一个变量的一个别名,任何对引用变量的改变实际上都会作用到原变量上. 声明一个引用变量应在变量名前放置一个“&”.如:int &refVar;  int & refVar;  int& refVar; #include<iostream>    using namespace std; int main(){ int count = 1;

C++学习笔记之——内联函数,引用

本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫追风 一直想开始写C++的学习笔记,学习C++已经两个月了,今天开始写一下引用,内联函数,的一些概念和作用吧.那么开始吧! ????内联函数: 我们写的程序最终都是要用编译器,进行编译链接形成一段机器可以知道的二进制代码,接着存到一个内存中,这时候每一段程序代码都会有自己的一个地址,计算机按照地址增

C++Premer Plus学习(五)&mdash;&mdash;函数探幽

一.内联函数 1.优点: 内联函数就是比较省资源,然后一般就是将简短,使用频率高的函数作为内联函数会比较合适. 2.一个demo #include "stdafx.h" #include<iostream> using namespace std; inline double Square(double x) { return x*x; } int _tmain(int argc, _TCHAR* argv[]) { int a = 16; cout << Sq