<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                【73.1 結構體數據的傳輸存儲和還原。】 結構體本質是一個數組,數組內可能包含了許多不同數據長度類型的成員,當整個結構體數據需要存儲或者傳輸(通信)給另外一個單片機時,這時候有兩種選擇,一種是一個成員一個成員的挨個處理,這種“以成員為單位”的處理方式比較繁瑣麻煩,另外一種是把整個結構體變量當作一個“以字節為單位”的普通數組來處理,但是有兩個關鍵的問題來了,第一個問題是如何把結構體“拆分”成“以字節為單位”來進行搬動數據,第二個問題是假如我們把整個結構體數據以“字節為單位”的方式“整體打包”傳遞給另外一個單片機,當這個接收方的單片機接收到我們這一組數據后,如何把這“一包”以字節為單位的數組再“還原”成相同的結構體變量,以便在程序處理中也能直接按“結構體的方式”來處理某個具體的成員。其實,這兩個問題都涉及到“指針的強制轉換”。具體講解的例子,請直接閱讀下面73.2段落的源代碼例子和注釋。 【73.2 例程練習和分析。】 現在編寫一個練習程序,把一個結構體變量“以字節的方式”存儲到另外一個普通數組里,然后再把這個“以字節為單位”的普通數組“還原”成“結構體的方式”,以便直接操作內部某個具體的成員。 /\*---C語言學習區域的開始。-----------------------------------------------\*/ struct StructMould\_1 { unsigned char u8Data\_A; unsigned long u32Data\_B; unsigned int u16Data\_C; }; struct StructMould\_1 GtMould\_1; //“生成”一個變量。 unsigned char Gu8Buffer\[sizeof(GtMould\_1)\]; //定義一個內存跟結構體變量大小一樣的普通數組 unsigned char \*pu8; //定義一個把結構體變量“拆分”成“以字節為單位”的指針 struct StructMould\_1 \*ptStruct; //定義一個結構體指針,用于“還原”普通數組為“結構體” unsigned int i; //定義一個用于for循環的變量 void main() //主函數 { //先把該結構體變量內部具體成員分別以“成員的方式”初始化為5,6,7 GtMould\_1.u8Data\_A=5; GtMould\_1.u32Data\_B=6; GtMould\_1.u16Data\_C=7; pu8=(unsigned char \*)&GtMould\_1; //把結構體變量強制轉換成“以字節為單位”的指針 for(i=0;i<sizeof(GtMould\_1);i++) { Gu8Buffer\[i\]=pu8\[i\]; //把結構體變量以字節的方式搬運并且存儲到普通數組里。 } ptStruct=(struct StructMould\_1 \*)&Gu8Buffer\[0\]; //再把普通數組強制“還原”成結構體指針 ptStruct->u8Data\_A=ptStruct->u8Data\_A+1; //該變量從5自加1后變成6。 ptStruct->u32Data\_B=ptStruct->u32Data\_B+1; //該變量從6自加1后變成7。 ptStruct->u16Data\_C=ptStruct->u16Data\_C+1; //該變量從7自加1后變成8。 View(ptStruct->u8Data\_A); //在電腦端觀察結構體成員u8Data\_A的數值。 View(ptStruct->u32Data\_B); //在電腦端觀察結構體成員u32Data\_B的數值。 View(ptStruct->u16Data\_C); //在電腦端觀察結構體成員u16Data\_C的數值。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:6 十六進制:6 二進制:110 第2個數 十進制:7 十六進制:7 二進制:111 第3個數 十進制:8 十六進制:8 二進制:1000 分析: 結構體成員u8Data\_A的數值是6。 結構體成員u32Data\_B的數值是7。 結構體成員u16Data\_C的數值是8。 【73.3 如何在單片機上練習本章節C語言程序?】 直接復制前面章節中第十一節的模板程序,練習代碼時只需要更改“C語言學習區域”的代碼就可以了,其它部分的代碼不要動。編譯后,把程序下載進帶串口的51學習板,通過電腦端的串口助手軟件就可以觀察到不同的變量數值,詳細方法請看第十一節內容。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看