回覆列表
  • 1 # 使用者1255843369499

    以32位系統為例,無論什麼型別的指標變數,它本身佔用的空間都是4個位元組,那為什麼我們需要把指標變數分成不同的子型別呢?

    比如:

    這裡的ptr_ch是字元型指標,用於儲存字元型變數的地址。

    這裡的ptr_i是整形指標,用於儲存整形變數的地址。

    ptr_ch和ptr_i都佔用4個位元組,我們似乎看不出指標型別的必要性。

    但是,當未來我們使用指標變數改變記憶體區域的值的時候:

    *ptr_ch="B"是要改變指標ptr_ch所指向的記憶體區域的「一個位元組」,而*ptr_i=255改變的是ptr_i所指向記憶體區域的「四個位元組」(因為它的意圖是改變一個整形變數的值,而整形變數是佔用4個位元組的),這時是透過指標型別來決定要訪問的記憶體區域大小的。

    同樣地,當我們使用指標變數從記憶體區域中讀取資料的時候,也需要指標型別來標識要讀取的資料區域大小。

    例如:

    這就是為什麼我們要區分指標型別的主要原因之一,此外,在ptr_i++和ptr_ch++時,它們自增的值也會根據資料型別而有所不同。

  • 中秋節和大豐收的關聯?
  • 為什麼有些人覺得D大調卡農好聽?