• 指针和引用初理解


    1. 指针是变量,指针变量的值是内存单元的地址,也可以说指针是内存单元的地址。

    如下图所示:指针p指向变量n. p的值就是变量n的地址。我们只要掌握了变量n的地址(也就是它的指针p),就可以在任何地方对其内存单元进行操作。

    也可以这么理解,指针变量也是一个变量。

    指针变量的值:p = 0x22f.               是另一个变量n的地址

    指针变量的地址:&p = 0xff68.         是二维指针变量的的值 ,假设int **p2=&p

    指针变量指向的值: *p=3.               是另一变量的值3

    int n=3;    int *p=&n;    *p=4;     cout<<n<<endl;

    2.引用是某块内存的别名。

    引用是C++中的概念,注意这里的&不是取地址。以下程序中,n 是m 的一个引用(reference),m是被引用物(referent)。

    int m;    int &n=m;

     n 相当于m 的别名(绰号),对n 的任何操作就是对m 的操作。例如有人名叫王小毛,他的绰号是“三毛”。说“三毛”怎么怎么的,其实就是对王小毛说三道四。所以n 既不是m 的拷贝,也不是指向m 的指针,其实n就是m 它自己。-----林锐高质量C++编程

    int m=3;   int &n=m;    n=5;   cout<<m<<endl;

     3.指针与引用的区别

    1、非空区别。任何情况下都不能使用指向空值的引用,一个引用必须总是指向某些对象,但指针可以为空;因此如果使用一个变量让他指向一个对象,但是该变量某些时候可不能不指向任何对象,应该把变量声明为指针。如果,变量不为空,可以把变量声明为引用。


    2,合法性区别。在使用引用指尖不需要测试它的合法性。相反,在使用指针之前最好先先进行测试,避免其指向NULL。


    3.可修改区别。指针可以被修改指向另外一个不同的对象,而引用则总是指向其在初始化时被指定的对象。
    #include<iostream>
    using namespace std;
    int main(void)
    {
        int a=10,b=1000;
        int &rInt=a;//rInt引用a,rInt等于10;
        rInt=b;//将b赋值给变量a,注意这里不非让rInt改变初衷引用b
        rInt=30;//改变rInt还是改变a.
        cout<<"a="<<a<<endl;
    
        int k=10,m=20;
        int *p=&k;//p指向a,可以通过操作p,来改变k
        p=&m;//改变了p的指向,之后改变p就对k,没有影响了。
        *p=30;
        cout<<"k="<<k<<endl;//k还是10;
        getchar();
    }
    4.应用区别。如果总是指向一个对象并且一旦指向后就不会改变指向,此时应该使用引用。反之推荐使用指针。

    总之:引用是变量的别名,不为空,一旦成为变量的别名就永远是那个变量的别名。
       指针是变量地址,指向变量,可以为空,用之前要检查非空,可以改变指向。


  • 相关阅读:
    easyui loadFilter 使用
    控件setText与setValue赋值顺序先后区别
    JS选中和取消选中checkbox
    easyui 解决连弹两个dialog时候,第二个dialog居中问题
    bootstrap基础学习【导航条、分页导航】(五)
    bootstrap基础学习【菜单、按钮、导航】(四)
    sublime设置
    《啊哈!算法》笔记
    《编码的奥秘》笔记
    Effective Objective-C 2.0 — 第14条:理解“类对象“的用意
  • 原文地址:https://www.cnblogs.com/qianwen/p/3830910.html
Copyright © 2020-2023  润新知