天天看點

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

繼續閱讀