1. 程式人生 > >C語言基礎--指標和資料儲存

C語言基礎--指標和資料儲存

資料的訪問方式: ------------------------------------ 直接訪問:直接訪問記憶體單元中的內容 間接訪問:通過 記憶體單元編號 或者 資料所佔位元組點數 訪問記憶體中的資料          char        1             1個記憶體單元          int         4個位元組        4個記憶體單元          short       2             2個記憶體單元          long        48           48個記憶體單元          float       4             4
個記憶體單元                                                                                                            
     double      8             8個記憶體單元
         %p可以將地址打印出來 ---------------------------       資料儲存    電腦記憶體:4G  8G  16G  1G = 1024M * 1024K * 1024B    位元組(byte):是最小的儲存單元,一個位元組被稱為一個儲存單元(記憶體單元),不同的資料型別所佔的儲存單元也不同
   位(bit):一個位元組又可以劃分為8    為了正確訪問記憶體單元,每個記憶體單元都有一個編號,記憶體單元的編號就是地址。    記憶體地址 = 地址 = 記憶體單元標號    記憶體單元中的資料才是我們關注的內容。 指標 指標是最常見的間接訪問。     指標就是記憶體地址,我們習慣把記憶體地址叫做指標,記憶體地址也可以簡稱為地址      &取址符  可以檢視一個變數的記憶體地址(記憶體首地址)      格式化輸出記憶體地址用%p

        int a = 110;

        printf("a的記憶體地址:%p\n",&a);

注意:
      &符號取出來的記憶體地址,只是變數的記憶體首地址,並不是變數只佔這一個記憶體地址,變數的資料型別決定變        量佔得幾個記憶體地址。   --------------------------- 指標變數 概念:存放記憶體地址的變數               格式:基本資料型別 *變數名 = 記憶體地址;   *取值操作符      我們通過*來訪問記憶體單元中的儲存的值      注意:*是取值操作符,  &是取址操作符 指標的重指向      指標變數的賦值意味著重新指向,而不是同時指向多個地址    如例

int a =3, b = 5;

        int *p = &a;

        p = &b;

        printf("%p %p\n", &a, &b);

        printf("%p %d\n", p,  *p);

 


指標的型別     定義指標型別要與取址變數的型別一致 指標變數所佔的位元組     指標變數所佔的位元組大小取決於作業系統的位數,64位的系統,指標變數的大小為8;32位的是4.     特別注意:     指標變數的大小(所佔位元組)只與作業系統的位數有關 特別注意:     1、如果出現*號的地方,前邊有型別修飾符:int、float..,此時*號僅僅起到標示作用,即告訴編譯器,這僅僅是一個指標變數          2、 如果出現*號的地方,前邊沒有型別修飾符,此時*號代表取值操作符,會把指標指向的區域中的內容取出來          3、 如果前邊沒有*號或者任何的型別修飾符。那這個變數就是一個指標變數,它裡邊儲存著某一個記憶體地址。 //指標賦值         C語言允許使用賦值運算子對指標進行賦值,前提是兩個指標具有相同的資料型別。 傳值和傳址     在傳參過程中,形參會拷貝實參的值。 ------------------------------------------ 指標與陣列C語言中,陣列是構造型別,系統會分配一段連續的記憶體空間,來儲存陣列的全部資料;其中陣列名代表陣列首個元素的地址
      &array == &array[0];
恆等於;指標變數parray相同,都指向陣列的首地址(第一個元素的地址) 指標可以做為陣列名使用 指標與陣列的區別
      1、所佔空間不同
            -指標:只與作業系統有關
            -陣列:與元素個數和型別有關
      2、陣列名是常量地址,不能被賦值不能重定向
      3、指標可以重定向
         
結構體指標變數指向的是結構體變數的首地址,也就是結構體第一個成員的地址。 結構體陣列與指標的關係 結構體陣列的 陣列名 是一個結構體 指標 常量