<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                【70.1 結構體與數組。】 結構體是數組,但不是普通的數組,而是一種“萬能數組”。普通數組,是依靠嚴格的數組下標(類似編號)來識別某個具體單元的(或者稱“尋址”),期間,如果要往數組插入或者刪除某些單元,后面所有單元的下標編號都會發生改變,牽一發而動全身,后面其它單元的下標序號自動重新排列,原來某個特定的單元的下標發生了改變,也就意味著“名字”發生了改變,這種情況在編寫程序的時候,就意味著很多代碼需要隨著更改調整,給程序員帶來很多不便。怎么辦?結構體此時橫空出世,扭轉了這種“不便”的局面。之所以稱結構體為“萬能數組”,是因為結構體內部沒有“下標編號”,只有名字。結構體與普通數組的本質區別是,結構體是靠“名字”來尋址的,不管你往結構體里插入或者刪除某些單元,其它單元的“名字”不會發生改變,隔離效果好,左鄰右舍不會受影響。除此之外,結構體內部的成員變量是允許出現不同的數據類型的,比如unsigned char,unsigned int,unsigned long這三種數據類型的變量都可以往同一個結構體里面“填充”,不受類型的局限,真正做到“萬能”級。而普通數組就沒有這個優越性,普通數組要么清一色都是unsigned char,要么清一色都是unsigned int,要么清一色都是unsigned long,不能像結構體這么“混合型”的。結構體的這種優越性,在大型程序的升級和維護時體現得非常明顯。 【70.2 “造模”和“生成”和“調用”。】 結構體的使用,有三道標準工序“造模”和“生成”和“調用”。塑膠外殼,必須先開模具(造模),然后再用模具印出外殼(生成),再把外殼應用于日常生活中(調用)。結構體也一樣,先“造”結構體的“模”(造模),再根據這個“模”來“生成”一個結構體變量(生成),然后在某函數里使用此變量(調用)。例子如下: struct StructMould //“造模” { unsigned char u8Data\_A; unsigned int u16Data\_B; unsigned long u32Data\_C; }; struct StructMould GtMould; //“生成”一個變量GtMould。 void main() { GtMould.u8Data\_A=1; //依靠成員的“名字”來“調用” GtMould.u16Data\_B=2; //依靠成員的“名字”來“調用” GtMould.u32Data\_C=3; //依靠成員的“名字”來“調用” while(1) { } } 把上述程序轉換成“普通數組”和“指針”的形式,給大家一個直觀的對比,代碼如下: unsigned char Gu8MouldBuffer\[7\]; //相當于結構體變量GtMould unsigned char \*pu8Data\_A; unsigned int \*pu16Data\_B; unsigned long \*pu32Data\_C; void main() { pu8Data\_A=(unsigned char \*)&Gu8MouldBuffer\[0\]; //依靠數組的下標\[0\]來“調用” \*pu8Data\_A=1; pu16Data\_B=(unsigned int \*)&Gu8MouldBuffer\[1\]; //依靠數組的下標\[1\]來“調用” \*pu16Data\_B=2; pu32Data\_C=(unsigned long \*)&Gu8MouldBuffer\[3\]; //依靠數組的下標\[3\]來“調用” \*pu32Data\_C=3; while(1) { } } 分析:上述兩種代碼,目標都是把1,2,3這三個數字存放在一個數組里。第一種用結構體的方式,第二種用普通數組的方式。 【70.3 例程練習和分析。】 現在編寫一個練習的程序: /\*---C語言學習區域的開始。-----------------------------------------------\*/ struct StructMould //“造模” { unsigned char u8Data\_A; unsigned int u16Data\_B; unsigned long u32Data\_C; }; struct StructMould GtMould; //“生成”一個變量GtMould。 void main() //主函數 { GtMould.u8Data\_A=1; //依靠成員的“名字”來“調用” GtMould.u16Data\_B=2; //依靠成員的“名字”來“調用” GtMould.u32Data\_C=3; //依靠成員的“名字”來“調用” View(GtMould.u8Data\_A); //把結構體成員GtMould.u8Data\_A發送到電腦端觀察 View(GtMould.u16Data\_B); //把結構體成員GtMould.u16Data\_B發送到電腦端觀察 View(GtMould.u32Data\_C); //把結構體成員GtMould.u32Data\_C發送到電腦端觀察 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:1 十六進制:1 二進制:1 第2個數 十進制:2 十六進制:2 二進制:10 第3個數 十進制:3 十六進制:3 二進制:11 分析: GtMould.u8Data\_A為1。 GtMould.u16Data\_B為2。 GtMould.u32Data\_C為3。 【70.4 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看