我的c語言小知識

2020-08-12 16:13:56

我的c語言小知識

7指針

  • 1、兩個型別相同的帶*型別的變數可以進行減法操作.

  • 2、相減的結果要除以去掉一個*的數據的寬度.

  • 3、兩個帶*型別相減後結果是int型 表示幾個儲存單元

  • 4、&表示可以跟任何變數,意味着取該變數記憶體地址,結果爲地址常數

    • 例如:

      int x=5;
      int* px=&x;          //&x則表示 int* 型別,所以也應該用int* 型別變數去接受
      
  • 5、*變數 表示砍掉一個 *再看型別

    • 例如:

      int x=5;
      int* px=&x; 
      int** ppx=&px
      /*  *px===> int 這裏*px就是int型別
          *ppx===> int* 這裏*ppx就是 int*型別
       */   
      
  • 6陣列指針:(*p)[數]

    我覺得其本質與一維指針相似,屬於一種新的指針型別,其*p與p存的都是陣列首地址,但存取陣列元素是需要用**p存取(雖然用的這個存取,但是本質只是一維指針的找值,主要是在找值時將偏移按規則移動了)

    • ps:一般的二維指針需要三個語句完成取值,這裏是陣列指針

在这里插入图片描述

  • 細看二維與陣列指針區別(這裏是取地址):

在这里插入图片描述

下面 下麪是標準二維找值 其實能看出來,數值指針比標準二維找值要快,所以一般二維陣列用陣列指針找值

  • *() 與 []可以相互轉換
  • 但請注意第一個壓棧內容*(p2+1)[2] 雖然也是二維找值,但它是先加再取 *,比如這裏找值便截然不同了,這裏直接將2同時加入到了二維,相當於 p2 [3] [0]

在这里插入图片描述