• 指针和引用初理解


    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.应用区别。如果总是指向一个对象并且一旦指向后就不会改变指向,此时应该使用引用。反之推荐使用指针。

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


  • 相关阅读:
    Javascript自动垃圾收集机制
    Javascript深入浅出(二)
    Javascript深入浅出(一)
    递归&循环&迭代&遍历&枚举,知多少
    事件流、事件处理程序和事件对象
    弹性布局学习笔记
    css3 伪元素
    css3伪类选择器nth-of-type,:nth-last-of-type,:first-of-type,:last-of-type,:only-of-type
    css3结构伪类选择器first-child,last-child,nth-child(),nth-last-child(),only-child
    css3状态伪类选择器:checked修改按钮默认样式
  • 原文地址:https://www.cnblogs.com/qianwen/p/3830910.html
Copyright © 2020-2023  润新知