• 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 * 的元素的数组;

  • 相关阅读:
    【题解】Luogu P4391 [BOI2009]Radio Transmission 无线传输
    kmp匹配详解
    点分治详解
    【题解】Luogu P3871 [TJOI2010]中位数
    树链剖分详解
    【题解】Luogu P3901 数列找不同
    【题解】Luogu P1503 鬼子进村
    【题解】 P2234 [HNOI2002]营业额统计
    Splay详解
    JSOI2020备考知识点复习
  • 原文地址:https://www.cnblogs.com/lshk0124/p/7097237.html
Copyright © 2020-2023  润新知