天天看点

C语言 - 常量指针与指针常量

通常在C语言中我们会遇到许多

const

修饰的变量,我们有时候会分不清它们,不知道什么时候该用它们,常常会出现误用,不如把它们的用法总结下来,防止以后出错吧!

const关键字

  • 定义

    :const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以 提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。

常量指针

  • 定义

    :常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。
  • 格式

    int num = 10;
    const int *ptr1 = #
    int const *ptr2 = #
    //可以赋值,因为指针本身是变量
    ptr1 = ptr2;
    //错误,不可以解引用后当左值,因为const修饰(int *)故指向的int型变量为常量不可修改
    *ptr2 = *ptr1;
               
    • 以上

      const

      写在

      int

      之前和写在

      int

      *

      之间的方式都正确,但习惯上常用第一种,表示更加明晰。
    • 指针本身的指向可以改变,但是指向的内容不可修改,只读。
  • 常见用法

    :通常用于参数传递过程中,如果被传入的参数的值在函数执行期间不希望被修改可以使用

    const

    修饰已达到安全的目的。

指针常量

  • 定义

    :指针常量的本质是一个常量,并且使用指针来修饰它,那么说明这个常量的值应该是一个指针。
  • 格式

    int num = 10;
    int* const ptr = #
    //可以赋值,指针常量指向的值并不一定是常量
    *ptr = 11;
    //不可以赋值,指针常量本身的指向不可改变,其值为常量
    *ptr = #
               
  • 常见用法

    :一般指针常量用于指向不会发生变化的指针,但是用法并不常见。

指向常量的常指针

  • 相当于常量指针和指针常量的结合,格式

    const int * const ptr = &num

    ,相当与有一个指向不可修改的指针指向了一个不可修改的常量,在实际coding中很少使用。
总结 :const 修饰谁,谁就不变

【参考】:百度百科-const

继续阅读