zoukankan      html  css  js  c++  java
  • 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 * 的元素的数组;

  • 相关阅读:
    SpringMVC+bootstrap-fileinput文件上传插件使用入门
    [Java]实现Comparable接口不严谨导致Comparison method violates its general contract!
    2021寒假ACM集训队第一次训练-搜索(一)
    第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛-热身赛
    2021蓝桥杯第三次训练赛
    2021年蓝桥杯第二次训练赛
    2021年蓝桥杯第一次训练赛
    HDU 1312 Red and Black
    HDU 1010 Tempter of the Bone
    HDU 3500 Fling
  • 原文地址:https://www.cnblogs.com/lshk0124/p/7097237.html
Copyright © 2011-2022 走看看