指針的使用

        正如拿着名片可以找到某個人一樣,通過指針可以訪問其指向的某塊內存區域。爲此,C語言引入了間接引用的概念,這需要使用運算符*。

  1.*運算符

     *的作用有兩個:一,聲明:聲明某個類型的指針變量; 二,間接引用,通過指針訪問其指向的內存區域。

      double num=3;

      double *pNum;

      pNum=#

      對以上代碼說明如下:

      num: double 類型的變量

      pNum: 指向double類型的指針變量,其值是num的值

      &num: 返回變量num的地址,與pNum等價

      *pNum:pNum所指向的變量,間接訪問方式,與num等價

      &(*pNum):與&num等價(即pNum)等價,num的地址。

      *(&num):*pNum(即num)等價,變量num


   1.2 指針的類型和指針所指向的類型

         原則上,指針的類型和指針所指向的類型應該是相同的,但是也有例外。下面我們將區分一下二者的不同,在此之前,我們先區分一下兩者的概念:所謂的指針的類型,指的是聲明指針變量是位於變量名前的“類型*”;而所謂的指針所指向的類型,指的是爲指針初始化或者賦值的變量類型。

   1.2.1 同類型指針的賦值

        同類型指針的賦值是最常見的一種情況。例如:pN1,pN2是兩個相同類型的指針,執行“pN1=pN2”這樣一個賦值操作後,pN1,pN2就指向了同樣的地址,也就是說兩個指針指向同一個內存單元,對*pN2的任何改動都會影響到pN1的值,反之亦然。

   1.2.2 指針的類型和指針所指向的類型不同時

    (1)指針內存的字節數大於指針類型佔據的字節數。

            double Dnum;

            int *pI = &Dnum;

     (2)指向內存的字節數小於指針類型的字節數。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章