• C中有关引用和指针的异同


    参考于https://blog.csdn.net/wtzdedaima/article/details/78377201

    C语言也学了蛮久的,其实一直都没有用到过或者碰到过引用的例子。前端时间再全面复习C的基础知识,看到引用这一块,发现两者的还是有一些差别的,抱着我不用,万一别人用我也需要看懂的原则,仔细观察研究了两者的区别。

    一下内容为转载:

    引用:引用是一个变量的另一个名字,又称别名。定义方式: 
    int a=10; 
    int &b=a;在这里,意思就是给a变量起了一个新名字b,因此b不可再次被重新定义。 
    引用必须初始化,无空引用,并且引用不分等级。 
    引用与指针的异同点: 
    相同点:在引用中 int &b=a;这一句代码可被编译器看做int * const b=&a;//加上const的作用是表明指针b的自身的值(a的地址)不能改变,而指向的值(a的值)可以改变。也就是说引用相当于指针,引用与指针在编译时的方法一样,指向的都是变量的内存地址。 
    不同点:1.在定义方式中引用储存的是值,而指针是一个变量的拷贝,存储的是地址。 
    2.引用只能对已经存在的变量或对象实现引用,而指针则不需要,可以定义为空。 
    3.在函数的传参中,如果传递的是一个引用,意味着这个变量或对象已经存在了;如果传递的是一个指针,则不能判断这个指针是不是有效的,是不是空的,因此在函数体 中大多数都得进行指针是否为空的判断。但是虽然引用较为安全,但是利用指针来传参效率较快。 
    4.引用是直接访问变量,不用分配自己的内存空间,而指针是间接访问,需要定义,需要有自己的内存空间。 
    例:交换函数swap()

    void swap(int &a,int &b)
    {
       int temp=a;
       a=b;
       b=temp;
    }
    void main()
    {
       int x=10,y=20;
       swap(x,y);
    }

    等价指针为:

    void swap(int *const a,int *const b)
    {
       int tmp=*a;
       *a=*b;
       *b=temp;
    }
    void main()
    {
    int x=10,y=20;
    swap(&x,&y);
    }
  • 相关阅读:
    C#中关于DBNULL的处理方法
    html 点击复制
    AJAX的简洁写法
    PHP 数组模糊查询
    PHP二维数组搜索返回数组
    php 数组排序得方法
    PHPExcel的使用
    使用PHPword中文乱码并且下载的方法
    关于多图上传的修改的操作
    把一个表里的两列或者三列合并为一行
  • 原文地址:https://www.cnblogs.com/LyndonMario/p/8901068.html
Copyright © 2020-2023  润新知