<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內心的非常平靜!瞬間清空所有的雜念,達到物我兩忘!

        博客園  :: 首頁  ::  :: 聯系 :: 訂閱 訂閱  :: 管理
       思維導圖
       

       
       介紹
       
      1> 指針定義:指針是保存變量地址的變量。
       
      2> 本文重點
               >> 指針與數組之間的關系
               >> 操縱指針的規則
       
      3> 指針優點
               >> 表達某個計算的唯一途徑
               >> 代碼更高效,更緊湊
          
              
      4> 指針缺點:難以理解,但是用好了,代碼會非常清晰。
       
      5> 將指針、數組和地址的算術運算集成在一起是C語言的一大優點。
       
       指針與地址
       
      1> 內存組織方式

      內存組織

           (1) 內存是一個個單元組成的,每一個內存單元中存放一個字節(8位)的二進制信息。
           (2) 機器中的內存單元是有序排列的。
           (3) 機器給各個內存單元規定不同地址來管理內存。這樣,CPU通過地址來識別不同的內存單元,正確的對內存單元進行操作。
       
      2> 指針與變量的關系(P:是指針變量,C:內存對象)

        >>> P:保存C:中的單元首地址——這里的地址不是物理地址,而是經過地址映射后的虛擬地址,即邏輯地址。

        >>> P:為指向C:的指針

       3>理解指針

         >>>  指針占用的內存空間大小: 32位系統占用4byte,64為8byte。

      機器配置:

      打印指針大小:

         >>>  指針就是地址——我們可以把指針認為是用來存放地址的數據類型。不能把指針簡簡單單的當成一個整型數,雖然地址的值是一個整型數據。

         >>>  指針是有類型的,但是這個類型不是給指針分配內存的,而是用來尋址的。

       

       指針與函數參數
       
      1.普通參數:C語言通過傳值方式將值傳遞給被調用函數。
         >> 會把變量的值復制一份給被調用函數。
         >> 復制:會把變量的值賦值給一個新的變量(參數)——變量和新的變量必須有相同的存儲容量。
         >> 被調用函數并不能修改主調程序中的變量值,因為被調用函數使用的是一個復制過來的內存單元。
       
      2.指針參數: 本質上跟普通參數傳遞是相同的,也進行了變量復制,但是傳過去的值是地址。 被調用函數通過地址能夠訪問和修改主調程序中變量的值。
       
      3.參數在內存消耗
        普通參數:取決于申明類型。char:1個字節;short:2個字節;long:8個字節
        指針參數:指針變量里存儲的是地址(一般是4個字節——32位),永遠是一個固定長度,不管是什么類型的指針。——除非處理器變化不是32位。
       
      4.double *dp, atof(char *)  這里的dp是指針變量,而atof是函數

       

       指針與數組
       
      1.指針操作數組快于下標操作數組
      2.數組的空間分配.如int a[10];——會在空間分配出40個相鄰的內存單元來(10*4)。

      3.指針操作數組
       
      int *pa;
      pa = &a[0];
      

       

       
       4.指針移動
      int *pa;
      int a[10];
      pa = &a[0];
      pa+1將指向下一個元素a[1]:
       >> 內存中的變化:"指針加1"會根據指針指定的類型int移動4個內存單元,其實本身并沒有移動,只是pa+1等于第5個內存單元地址——“指針加1”中的1的大小是取決于pa的類型int的,指針類型決定指針跨內存單元的步長。
       
      >> pa+1 等于是指向第5個內存單元——a[1]的第一個內存單元。
       

       5.規則:
         >> &a[i]和a+i含義相同,相互使用。a+i是a之后第i個元素地址。
         >> 數組名代表數組第一個元素的地址。
       
       地址運算符
       
      1. 指針初始化:0或表示地址的表達式。
       
      2. “指針加1”中的“1”的大小根據數據類型的長度按比例縮放。如果int類型占4個字節的存儲空間,對應的1按4倍計算。

       

      驗證:

       >>> 若指向char類型的指針p的內存地址是0x000000,那么p+1后的地址是0x000001。

      驗證過程如下:

      運行結果:

       

      >>> 若指向int 類型的指針p的內存地址是0x000000,那么p+1后的地址是0x000004。

      運行結果:

       

      3.指向不同數組的元素的指針之間的算術或比較運算都沒有定義。

       

      4.指針相減:如果p和q指向相同數組中的元素,且p<q,那么q-p+1就是p和q之間的元素(包括p和q)

      代碼驗證:

      運行結果:

       流程變化:q-p=16 => 16/4=4 (按照int型所占內存單元等比例縮放) => 4 + 1 = 5;

       

       總結
       
      這次寫關于c語言方面指針,是因為這兩天看php內核文件的時候,由于C方面的欠缺,所以看著很吃力。所以想再復習下C語言。
       
      為什么從指針入手呢?可能是因為指針在C語言中是比較難的。所以先把最難的啃下來。
       
      本來是想一次性寫完,可是指針這方面內容太多,所以決定分幾批寫。
       
      我在C語言方面還是很薄弱,如果文章中有錯誤,希望高手們指點下。
       
       
      我知道博客園C方面高手非常多,我在C方面屬于菜鳥級別的,沒有任何開發經驗,所以希望高手們能多指點下!

       

       

       

      參考文獻:《C程序設計語言》

      posted on 2012-03-22 22:34  川山甲  閱讀(42264)  評論(15)    收藏  舉報
      主站蜘蛛池模板: 亚洲成av人片天堂网无码| 久久人人97超碰精品| 97久久久亚洲综合久久| 亚洲第一区二区快射影院| 极品少妇的粉嫩小泬看片| 久久综合给合久久狠狠狠| 亚洲熟妇色自偷自拍另类| 无套内谢少妇高清毛片| 久久综合亚洲色一区二区三区| 亚洲综合成人一区二区三区| 国产精品一区二区三区黄色| 久久97人人超人人超碰超国产| 亚洲另类激情专区小说图片| 在线国产精品中文字幕| 无套内谢少妇一二三四| 国产精品自拍午夜福利| 91麻豆亚洲国产成人久久| 午夜欧美精品久久久久久久 | 亚洲综合av男人的天堂| 中文字幕人妻精品在线| 97人妻天天爽夜夜爽二区 | 一本色道久久综合亚洲精品不卡| 日韩精品一区二区三区在| 扒开粉嫩的小缝隙喷白浆视频| 国产精品∧v在线观看| 国产白丝无码免费视频| AV无码不卡一区二区三区| 同性男男黄gay片免费| 亚洲国产欧美在线看片一国产 | 亚洲第一综合天堂另类专| 国产精品va无码一区二区| 国产地址二永久伊甸园| 国产精品国三级国产专区| 少妇极品熟妇人妻无码| 国产高清精品在线一区二区| 丰满人妻被黑人连续中出| 亚洲国内精品一区二区| 国产一区二区三区亚洲精品| 婷婷综合亚洲| 国产av一区二区亚洲精品| 久久毛片少妇高潮|