天天看點

c中指針----------指針、指針的指針、指針數組和數組指針

一、指針

  如果在程式中定義一個變量,在對程式進行編譯,系統會自動給這個變量配置設定記憶體單元,根據不同的類型,配置設定不同長度的空間,如int占用4個位元組,char占用1個位元組。記憶體單元中每個位元組都有編号,這就是位址。由于可通過位址能夠找到所需的變量單元,可以說位址指向該變量單元。打個比方,一個房間的門口挂了一個房間号301,這個301就是房間的位址,将該位址形象化為指針。對于一個記憶體單元來說,單元的位址(編号)即為指針,其中存放的資料才是該單元的内容。

  嚴格地說,一個指針是一個位址,是一個常量。而一個指針變量卻可以被賦予不同的指針值,是變量。但常把指針變量簡稱為指針。為了避免混淆,約定:“指針”是指位址,是常量,“指針變量”是指取值為位址的變量。定義指針的目的是為了通過指針去通路記憶體單元。

例如:

   int a=12;

   int *p=&a;

二、指針的指針(二級指針)

   簡單來說,二級指針變量就是一級指針變量的位址。

  int a=12;

  int *p=&a;

  int **=&p;

c中指針----------指針、指針的指針、指針數組和數組指針

         表達式               

        相當的表達式

          a

          12

          p

          &a

         *p

         a,12

          c

         &p

          *c

         p,&a

          **c

         *p,a,12

三、指針數組和指針數組

int q[10];     //數組

int *p[10];    //指針數組

int (*r)[10];   //指針數組

c中指針----------指針、指針的指針、指針數組和數組指針
c中指針----------指針、指針的指針、指針數組和數組指針
c中指針----------指針、指針的指針、指針數組和數組指針

繼續閱讀