zoukankan      html  css  js  c++  java
  • 引用和指针做形参时的区别

    引用和指针做形参是很常见的问题,但是它们在做参数的时候是有区别的。先说一下指针吧,指针他是一个变量,有具体的值,他的值是一个地址(非const)。

    而引用是对一个变量的引用,是变量的别名,并且在引用的时候必须要初始化。举个例子吧:  

    int  a=2;    

    int  &b=a;    // b是对a的引用,a、b是同一个内存单元,即a和b的值都是2,b就相当于是a的一个别名,改变b的值a也会发生改变,改变a的值b也会发生改变,例如

    b=10;      当系统执行了这条语句后,a和b的值就都变成了10;

    a=-5;       当系统执行了这条语句后,a和b的值就都变成-5。 因为a和b具有同一个内存空间,所以不管改变哪一个的值,另一个也会跟着发生改变,可以理解为一个

    人他可以有两个名字,他既可以叫 张三,也能叫李四,但不管是哪个名字,其实说的是一个人。然后说一下引用和指针做形参时的具体用法吧,举下面这个例子:

    void swap(int &pa,int *pb)

    {

    }

    int main()

    {

       int a,*b;

       swap(a,b)  

    }

    在主函数中调用swap()时,指针和引用做形参就是上面的形式。当用指针或者引用做形参来改变主函数中变量的值得时候,指针是值传递,传递的是指针变量b的值;而

    引用是址传递,传递的是变量a的地址。另外还有一点要知道,指针做形参,传递指针的时候,会产生一个临时的指针变量,需要分配额外的内存空间;但是传引用的话

    则不会,所以传引用效率更高,也比指针更安全。

  • 相关阅读:
    LInux 安全测试 2
    LInux 安全测试
    又一款linux提权辅助工具
    shell 生成指定范围随机数与随机字符串 .
    腾讯新浪通过IP地址获取当前地理位置(省份)的接口
    建站指南:百度认为什么样的网站更有抓取和收录价值2012-06-20
    ngx_lua 金山项目 黄雀
    在页面中使用js
    多线程取读文件(别人的,有点晕,先放在这里有时间研究研究)
    factory工厂模式
  • 原文地址:https://www.cnblogs.com/buanxu/p/12754037.html
Copyright © 2011-2022 走看看