新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 《C與指針》讀書筆記六

        《C與指針》讀書筆記六

        作者: 時間:2016-08-15 來源:網絡 收藏

          在以前也使用過的運算,但是在這本書里作者詳細的介紹了的“算數運算”、“關系運算”。的算數運算一般是 指針±整數。實現起來非常簡單,我有位同事在R校驗時也使用了。我們可以摘錄一段。

        本文引用地址:http://www.104case.com/article/201608/295500.htm

          U16 RC;

          U8 CRCH, CRCL;

          U8 *pUNChar;

          CRC = out_crc(UART0.RX_buf,UART0.RX_count-2);

          pUNChar = &CRC;

          CRCH = *(pUNChar++);

          CRCL = *pUNChar;

          此段代碼在單片機上運行,所以U16是16位無符號整型數據,也就是unsigned int CRC。U8是一個無符號char型數據。 CRC 接收了out_crc( )函數的返回。也就是一組數的crc計算結果。需要將CRC拆分為兩個8位數據。我們使用一個pUNChar指針指向該整型數據。在單片機中整型高8位存儲在地址,低8位存儲在高地址。

          CRCH = *(pUNChar++); 該條語句實現兩個功能。第一將pUNChar指向地址的值賦給CRCH。也就是*(pUNChar)賦給CRCH, 其實就是CRC的高8位賦給CRCH。第二pUNChar自增。也就是pUNChar++。 其實等價于以下兩條語句:

          CRCH = *pUNChar;

          pUNChar++;

          pUNChar++其實就是將pUNChar的值加1。也就是pUNChar指向CRC低8位。

          CRCL = *pUNChar;就非常好理解了。將pUNChar地址的值賦給CRCL。簡單快速的實現了一個整型數據的拆分。其中用到了指針的加法運算。pUNChar是U8類型,所以pUNChar++是pUNChar值增加1。

          加入指針的類型是U16,加法運算會怎樣。這個問題可以實驗獲得。

          U16 arrary[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;

          U16 *pU16;

          pU16 = arrary;

          pU16++;

          pU16 = arrary;是將pU16指向arrary首個成員地址,即arrary[0]的地址。

          pU16++是將pU16指向arrary第二個成員地址,即arrary[1]的地址。arrary[1]與arrary[0]地址相差2。因為arrary是U16,2個字節。所以地址相差為2. pU16++也就使pU16的值增大了2。所以指針的算數運算的結果與本身的類型有關。指針關系運算其實可以不使用的。比如書中的例子:

          #define N_VALUES 5

          float values[N_VALUES]

          float *vp;

          for( vp =&values[0]; vap < &values[N_VALUES];)

          *vap++ = 0;

          初始化了一個values數組,并且全部初始化為0。如果按照一般的寫法應該為

          char i;

          for( i =0; i

          values[ i ] = 0.0;

          再見到作者的實現方法之前,我一直是用這種方法?,F在覺得作者的方法比較簡單。



        關鍵詞: C 指針

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乌拉特后旗| 黔南| 土默特右旗| 伊川县| 博客| 老河口市| 江阴市| 梁平县| 昭通市| 屏边| 翁牛特旗| 鲁山县| 连江县| 繁昌县| 休宁县| 永新县| 兴国县| 兴城市| 繁峙县| 东乡族自治县| 双江| 宁明县| 营口市| 南溪县| 南平市| 玉门市| 南岸区| 济阳县| 青河县| 金川县| 柳林县| 仁怀市| 武安市| 济阳县| 延庆县| 望都县| 兴城市| 凤城市| 万载县| 宣城市| 富阳市|