【C++自我精讲】根蒂根基系列一 指针与引用

    添加时间:2013-7-1 点击量:
    【C++自我精讲】根蒂根基系列一 指针与引用

    0 媒介


    指针、引用、指针与引用差别。



    1 指针


    变量:代码中经常经由过程定义变量来申请并定名存储空间,并经由过程变量的名字来应用这段存储空间。




    //变量
    
    int nNum; //声明名字为nNum的int型存储空间
    nNum = 100; //nNum存储值100
    nNum = 200; //改变nNum存储值200



     指针:又叫一级指针,用来指导一个内存地址的变量。对于一个类型T(int、char、folat...),T就是指向T的指针类型,一个T类型的变量保存了一个T对象的地址。




    //指针
    
    int pNum; //定义指针pNum
    pNum = &nNum;//pNum指向变量nNum在内存中的地址,而不是变量本身的值200(取地址运算符&:取变量的地址。如:&nNum为取变量nNum的地址)
    int nNum1 = pNum; //取指针pNum指向存储空间值200(指针运算符:从地址中取数据。如:pNum为从地址pNum中取值)



     指针变量:指针是地址,指针变量是存放地址的变量。




    //指针变量
    
    int pVar = pNum;//等同int pVar = &nNum;



    二级指针:指向指针变量的指针。




    //二级指针
    
    int ppNum = pVar;//



     用一张图默示下二级指针:


     


    C是常量;B是一级指针,B的值(即C的地址)是一级指针数据;A是二级指针,A的值(即B的地址)是二级指针数据。



    空指针:不指向任何对象,指针变量值为NULL。指针为空的断定经常为了避免指针变量的不法应用。




    int pNum = NULL;
    
    ...
    if(NULL != pNum)
    {
    ...
    }



     函数指针:是指向函数的指针变量。可用该指针变量调用函数,就如同用指针变量引用其他类型变量一样。



     函数指针声明格局:类型申明符 (函数名)(参数)  




    //函数min
    
    int min(int x,int y);
    //函数max
    int max(int x,int y);
    //函数指针
    int (pFun)(intint);

    //应用函数指针调用函数
    int nNumMin = 1;
    int nNumMax = 100;
    int nMin = 0;
    int nMax = 0;
    pFun
    = min;
    nMin
    = (pFun)(nNumMin,nNumMax);//nMin = 1;
    pFun = max;
    nMax
    = (pFun)(nNumMin,nNumMax);//nMax = 100;



    指针函数:函数的返回值类型是一个指针类型,本质是一个函数。



    指针函数声明格局:类型申明符 函数名(参数)  或 类型申明符 (函数名(参数))




    int pfun(intint);//pfun是一个指向返回值为int的函数的指针




    2 引用


    引用:是对象的别号,对引用的操纵与对变量的直接操纵一样。其首要用于函数参数和返回值类型,T&默示T类型的引用。引用不是数据类型,引用本身不占存储空间。




    int i = 100;
    
    int &j = i;//&为标识感化,非取地址




    3 指针与引用差别


    1)指针可以指向空值,引用不克不及。若是一个变量指向另一个对象,它可能为空,应当用指针;它不容许为空,应当应用引用。


    2)指针可以改变指向,引用不成以改变指向。引用初始化今后不克不及被改变,指针可以改变所指的对象。


    3)指针的大小是固定字节(4个字节),引用的大小是所指变量的大小。


    我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》
    分享到: