zoukankan      html  css  js  c++  java
  • const修饰指针

    关于const修饰指针的情况,一般分为如下4种情况:

    int b =500;
    const int *a =&b;    //情况1
    int const *a =&b;    //情况2
    int* const  a =&b;    //情况3
    const int* const a =&b;    //情况4

    如何区别呢?
      

         如果const 位于星号的左侧,则const 就是用来修饰指针所指向的变量,即指针指向为常量;

         如果const 位于星号的右侧,const就是修饰指针本身,即指针本身是常量。

    1.情况1和2相同,都是指针所指向的内容为常量,这种情况下不允许对内容进行更改操作。

      例如

    int b =500;
    const int *a =&b;    //情况1
    *a =600;   //错误

      但也有别的办法改变*a的值,一个是通过改变b的值,另一个是使a指向别处 a = &c 。

    对于情况1和2,可以不进行初始化。因为虽然指针内容是常量,但指针本身不是常量。

    2.情况3 为指针本身是常量,不能对指针本身进行更改操作,而指针所指向的内容不是常量。

      因此,定义时必须同时初始化。

    3.情况4 为指针本身和指向的内容均为常量。

  • 相关阅读:
    C#dll中无法找到c++dll中函数的入口
    C#委托及事件处理机制浅析
    lib和dll的例子
    C#中自定义消息,与MFc对比
    MFC消息响应机制 q
    MFC中消息响应机制
    C# 消息处理机制及自定义过滤方式
    c++中__declspec用法总结
    C++中使用接口
    C# 位域[flags] 转
  • 原文地址:https://www.cnblogs.com/zhanbiqiang/p/4014924.html
Copyright © 2011-2022 走看看