const

通常使用 const 修饰符来定义常量。

常量:共享一块内存空间,即使多处使用,根据 const 修饰的位置来确定是否能修改。在编译阶段会执行类型检查。

常量的四种写法:

  1. static const 数据类型 * 常量名 = 值; // 局部常量:用 static 修饰后,不能提供外界访问
  2. const 数据类型 * 常量名 = 值; // 全局常量:不论定义在哪个文件夹中,外部都能访问
  3. 数据类型 const * 常量名 = 值;
  4. 数据类型 * const 常量名 = 值;

const 修饰位置不同的区别?
实例:

  1. const int *p = NULL;
  2. int const *p = NULL;
  3. int* const p = NULL;

解析:

  1. *p 不能被修改,p 能被修改;

    int a = 10;
    p = &a;    // 正确
    *p = 10; // 报错
  2. *p 不能被修改,p 能被修改;

    int b = 20;
    p = &b;    // 正确
    *p = 20; // 报错
  3. *p 能被修改,p 不能被修改;

    int a = 10;
    p = &a;    // 报错
    *p = 10; // 正确

注意:

  1. 1 和 2 其实没什么区别。
  2. oc 中字符串的值是在常量区,3 中两种都报错。

结论:

const 右边的总不能被修改。

原文地址:https://www.cnblogs.com/dins/p/const.html