zoukankan      html  css  js  c++  java
  • const 指针的三种使用方式

    ///////////////////////const 指针的三种状态/////////////////////

    注意:const 的前后顺序
    const 在类型之前 ---可以修改指针包含的地址,不能修改指针指向的值
    const 在变量之前类型之后 ---可以修改指针的指向值,不能修改指针地址

    // 1.指针指向的数据为常量,不能修改,但是可以修改指针包含的地址

    /*
    int HoursInDay = 24;
    const int* pInteger = &HoursInDay;

    cout<<HoursInDay<<" "<<*pInteger<<endl;

    //*pInteger = 55; //不能通过指针修改指向的值

    cout<<HoursInDay<<" "<<*pInteger<<endl;

    int MonthsInYear = 12;
    pInteger = &MonthsInYear; //可以修改指针指向的地址

    //*pInteger = 13;

    //int *pAnotherPointerToInt = pInteger; //指针的类型不同不能用于拷贝

    */


    //2.指针包含的地址是常量,不能修改,但可以修改指针指向的数据

    /*
    int DaysInMonth = 30;
    int* const pDaysInMonth = &DaysInMonth;

    *pDaysInMonth = 31; //Ok! value can be change

    int DaysInLunarMonth = 28;
    //pDaysInMonth = &DaysInLunarMonth; Cannot change address!
    */


    //3.指针包含的地址以及它指向值都是常量,不能修改(这种组合最为严格)

    /*
    int HoursInDay = 24;

    const int* const pHoursInDay = &HoursInDay;

    //*pHoursInDay = 25; cannot change pointed value 不能修改指向的值

    int DayInMonth = 30;

    //pHoursInDay = &DayInMonth; cannot change pointer value 不能修改指针
    */

    将指针传递给函数时,这些形式的const很有用。函数参数应声明为最严格的const指针,以确保函数不会修改指针指向的值。这让函数更容易维护,在时过境迁和人员更换尤其如此。

    void CalcArea(const double* const pPi,        //const pointer to const data
                        const double* const pRadius, //i.e.. nothing can be changed
                        double* const pArea              //change pointed value,not address
                       )
    {
           //check pointers before using!
           if (pPi && pRadius &&pArea)
          {
              *pArea = (*pPi) * (*pRadius) *(*pRadius);
          }
    }


    int main()
    {
    const double PI = 3.14;

    cout << "Enter radius of circle: ";
    double Radius = 0;
    cin >> Radius;

    double Area = 0;
    CalcArea(&PI,&Radius,&Area);

    cout << "Area is = "<<Area<<endl;
    }

  • 相关阅读:
    [C++]怎么将.h和.cpp文件分别放在不同的目录
    [C++]VAssistX文件头添加注释功能设置
    教程-Delphi调用百度地图API(XE8+WIN7)
    WebBrowser的各种使用方法(未完待续)(XE8+WIN7)
    Android教程-夜神模拟器连接IDE更新让Delphi发现你的手机或夜神模拟器
    首尔甜城常用电话
    Android问题-DelphiXE5开发Andriod连接Webservice乱码问题
    点乘的使用
    [转]脏读,不可重复读,幻读的理解
    Unity3D刚体不同力的测试(ForceMode,AddForce,RelativeAddForce)
  • 原文地址:https://www.cnblogs.com/cci8go/p/3798986.html
Copyright © 2011-2022 走看看