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

  • 相关阅读:
    pip错误:'utf-8' codec can't decode byte解决方法
    windows中python2与python3共存
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    项目需求分析报告答辩总结
    项目选题报告答辩总结
    项目UML设计(团队)
    # 第七次作业--项目需求分析(团队)
    结对项目--第二次作业
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4425864.html
Copyright © 2011-2022 走看看