zoukankan      html  css  js  c++  java
  • C++入门经典-例5.6-指针与const

    1:同其他数据类型一样,指针也有常量,使用const关键字定义,形式如下:

    int i=9;

    int *const p=&i;//无法改变内存指向

    *p=3;

        将关键字const放在标识符前,表示这个数据本身是常量,而数据类型那个int*即整形指针。与其他常量一样,指针常量必须初始化。我们无法改变它的内存指向,但是可以改变它指向内存的内容。

        若将const以如下形式使用时:

    int i=9;

    const int *p=&i;//不允许通过指针修改内容

        这是指向常量的指针,虽然它所指向的数据可以通过赋值语句进行修改,但是通过该指针修改内存内容的操作是不允许的。

        当const以如下形式使用时:

    int i=9;

    const int *const p=&i;

        该指针是一个指向常量的指针常量,既不可以改变它的内存指向,也不可以通过它修改指向内容的内容。

    2:运行代码:

    // 5.6.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using std::cout;
    using std::endl;
    
    int main()
    {
        int i = 5;
        const int c = 99; //c为常量
        const int* pR = &i;//这个指针只能用来“读”内存数据,但可以改变自己的地址。
        int* const pC = &i;//这个指针本身是常量,不能改变指向,但它能够改变内存的内容。
        const int* const pCR = &i;//这个指针只能用来“读”内存数据,并且不能改变指向。
        cout<<"三个指针都指向了同一个变量i,同一块内存"<<endl;
        cout<<"指向常量的指针pR操作:"<<endl;
        //*pR = 6             //去掉语句前方注释报错
        cout<<"通过赋值语句修改i:"<<endl;
        i = 100;
        cout<<"i:"<<i<<endl;
        cout<<"将pR的地址变成常量c的地址:"<<endl;
        pR = &c;
        cout<<"*pR:"<<*pR<<endl;
        cout<<"指向常量的指针pC操作:"<<endl;
        //pC = &c;            //去掉语句前方注释报错
        cout<<"通过pC改变i值:"<<endl;
        *pC = 6;
        cout<<"i:"<<i<<endl;
        cout<<"指向常量的指针常量pCR操作:"<<endl;
        //pCR =&c;
        //*pCR =100;
        cout<<"通过pCR无法改变任何东西,真正作到了只读"<<endl;
          return 0;
    }
    View Code

    运行结果:

  • 相关阅读:
    Document
    Document
    Document
    Document
    Document
    Document
    Document
    Document
    C#中的委托是什么
    C# Lambda表达式Contains方法 like
  • 原文地址:https://www.cnblogs.com/lovemi93/p/7522008.html
Copyright © 2011-2022 走看看