const关键字跟指针

const关键字和指针

const和指针相结合的四种情况

  四种情况分别如下:

    int cons *p  p本身不是常量,p指向的地址的数据为常量

    const int *p  p本身不是常量,p指向的地址的数据为常量

    int * const p  p是常量,p指向的地址空间内不是常量

    const int * const p  p是常量,p指向的地址空间也是常量

 

  总结:当const在*左边是,修饰的是p指向的地址的数据,当const在*右边是,修饰的p

 

  当用const修饰一个变量时,在gcc下,依然可以通过指针修改变量的值

   int main(void)

    {
      const int a = 5;
      //a = 6; // error: assignment of read-only variable ‘a’
      int *p;
      p = (int *)&a; // 这里报警高可以通过强制类型转换来消除
      *p = 6;
      printf("a = %d.\n", a); // a = 6,结果证明const类型的变量被改了

      return 0;

    }