C++中的指针

指针和引用来说都是属于“指向(point to)”的方式;

引用是以“&”地址符号来对其赋值和声明;

  例如int& nRefValue = nVal;   nRefValue即为nVal的一个引用,也可以说nRefValue是nVal的一个别名;

  例如void CalculateMax(int* pIntArray,int nArraySize,int& nMaxValue);中nMaxValue作为一个引用参数,在函数栈空间建立的引用变量可以修改对应的实参;

指针也是实现了对其他对象的间接访问;指针内存放的是执行变量的内存地址;可以赋值和拷贝;

指针的声明:例如int* pIntBuf;声明了pIntBuf为int类型的指针,pIntBuf指向了Int型的对象;那么从该指针位置的四个字节就可以解读为int型数值;

  不同类型的指针一般不能进行赋值,除非进行强制转换或者使用转换符号reinterpret_cast,或者父子类之间的转换dynamic_cast;

指针可以看做类似int、double等的基本类型;只是其中存放内容不一样和功能不一样;

指针内存放的地址可以配合“*”符号进行解读,也成为取地址符;

  例如:int a = 10; 

     int* pInt = &a;

     *pInt = 20;

     则a = 20;

对指针的修改:

  1)对指针内存放的地址的修改;

  2)对指针指向的对象的修改;

该类型与const和配合产生了4中组合,也是面试和笔试常考的内容;

int *const pInt;

int const* pInt;

const int * pInt;

cosnt int * const pInt;

既然指针可以做基础类型来使用,那么它拥有基础类型的所有属性;

不同的指针类型:

1)指向对象的指针;

2)指向指针的指针;

3)指针数组;

4)指向指针数组的指针;  

    int *p[5];
    for (int i = 0; i < 5; i++)
    {
        p[i] = new int[10];
    }

    int*(*q)[5];
    q = &p;

其中int *(*q)[5];声明了一个指向含有5个int * 的元素的数组;

posted on 2017-06-30 09:10  黑山彩云间  阅读(108)  评论(3编辑  收藏  举报