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

    1.引用相当于一个变量的别名,指针指向内存,存放的是变量的地址

    2.引用在定义之后必须被初始化,指针不需要初始化

    错误案例:int p0;  int &p1; p1=p0;

    3.引用在初始化之后的值不可以改变,指针可以改变

    这点从编译角度来分析的话, 程序在编译时分别将指针和引用添加到符号表中,符号表存的是变量和变量的地址,且符号表生成之后不会再改,指针变量的地址值是指针对象的地址(可以修改),而引用在符号表上对应的地址值为引用对象的地址值,所以引用对象不可更改

    4.sizeof (引用)返回引用所指变量的大小,sizeof(指针)返回指针的大小。

    5.通知引用和指针还经常作为函数参数来传递的,通过引用传递的参数修改后,调用该函数的实参也发生了改变,指针形参改变后实参虽然也会改变,但是和引用不同的是,指针的形参构造的时候会申请内存,引用形参不申请内存。

    两整数变量值交换的c程序如下:


    void swapint(int *a,int *b)
    {
    int temp;
    temp=*a;
    a=*b;
    *b=temp;
    }

    指针a和指针b发生变化后,传递到该函数中的实参发生变化

    使用引用机制后,以上程序的c++版本为:


    void swapint(int &a,int &b)
    {
    int temp;
    temp=a;
    a=b;
    b=temp;
    }

    引用a,b发生变化后,传递到该函数中的实参发生了变化

    6.当大型对象传递给形参时,使用引用可以提升效率,因为引用只是一个内存的别名,没有发生对象的复制

    参考链接:http://blog.sina.com.cn/s/blog_4ed9fbab01014pp3.html

  • 相关阅读:
    video全屏视频背景适配不同分辨率
    深入理解object.defineproperty()方法
    抓取之近似网页过滤
    基情四射的两个css样式
    Hadoop 2.4.1 登录认证配置小结
    Window中调试HBase问题小结
    改了改博客界面
    Hbase0.98.4/Hadoop2.4.1整合小结【原创】
    Hadoop 2.4.1 Map/Reduce小结【原创】
    hadoop的dfs工具类一个【原创】
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4425864.html
Copyright © 2011-2022 走看看