<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                【46.1 數組是什么?】 數組就是一堆變量或常量的集合。把一個數組里面某一個變量或者常量稱為數組的元素,反過來也可以這么說,元素的集合就是數組。數組的最大特點就是內部所有的元素的地址都是挨家挨戶相連的,同花順似的,以第一個元素(下標是0的元素)為首地址,后來元素的地址挨個依次增大。首地址在RAM中的絕對地址往往是編譯器自動分配的,我們不用管,可以看成是隨機的。多說一句,在某些單片機,也可以通過特定的C語言關鍵詞,強制要求編譯器按我們的意愿,來分配到RAM中指定的某個絕對地址,這部分的內容這里暫時不講。繼續剛才的話題,首地址就像是一個坐標原點,一旦被編譯器確定下來它在RAM中的地址,那么后面其它元素的地址都是在此基礎上依次增大的,有規律的。正因為這個特點,數組在項目中往往起到緩存的作用。比如,在通信的項目中,用來作為一串數據的接收緩存。在界面顯示的項目中,某個16x16點陣漢字的字模,需要一個內含32個元素的數組來作為緩存。在讀寫文件的項目中,也需要一個大數組來作為文件內容的緩存。在某些涉及復雜算法的項目,以數組作為緩存,并且通過配合循環語句或者指針,就可以快速批量的處理數據(循環語句和指針的相關知識后面章節會講到)。總之,在項目應用中,數組無處不在。 數組分為一維數組,二維數組,三維數組。一維數組應用最廣,二維數組其次,三維數組最少用。所以本教程只講一維數組和二維數組,本節先講一維數組。 【46.2 一維數組的書寫格式和特點。】 一維數組不帶初始化時候的定義格式如下: 數據類型 數組名\[數組元素總數N\]; 數據類型是指unsigned char,unsigned int,unsigned long這類關鍵詞;數組名就是由字母和數字組合而成的字符串,遵循常用變量的命名規則;N是數字,代表此數組內部有多少個元素。比如: unsigned char x\[3\]; //這里的3是數組內部元素的總數,但不是下標。 上述這一行代碼,就相當于一條語句定義了3個變量,這3個變量分別是x\[0\],x\[1\],x\[2\],但是不存在x\[3\]這個變量。這里,具體元素中括號內的“0,1,2”稱為數組的下標,代表某個具體的元素。由此可見,數組有“批量定義”的特點。同時也要發現,此數組定義的N是3,代表內含3個元素變量,但是具體到某個元素的時候,下標不是從1開始,而是從0開始,最后一個也不是3而是2。可以這樣描述,某個數組有N個元素,它具體元素的下標是從0開始,到N-1結束。那么問題來,如果一個數組明明最大只有N個元素,但是我在操作某個具體的元素時,非要用下標N或者N+1,也就是說,如果超過數組的范圍的操作,會出現什么問題?后果嚴重嗎?答案是:會導致數組越界出現異常或者編譯不通過,可能會破壞其它數據,后果是嚴重的。因此大家使用數組的時候,要注意數組不能越界的問題。 剛剛講了一維數組不帶初始化的定義格式,現在接著講帶初始化的定義格式,如下: 數據類型 數組名\[數組元素總數N\]={元素0, 元素1,…元素N-1}; 比如: unsigned char y\[3\]={10,11,12}; 此數組一行代碼定義了3個變量,分別是y\[0\], y\[1\], y\[2\]。而y\[0\]初始化為10,y\[1\]初始化為11,y\[2\]初始化為12。 在程序中,操作數組某個變量元素時,下標可以是常量,比如y\[0\],此時的0就是常量;下標也可以是變量,比如y\[i\],此時的i就是變量。再強調一次,作為下標的常量或者變量i的數值必須小于數組定義時的元素個數,否則就會導致數組越界出現異常或者編譯不通過。 中括號內的N什么時候是“數組的元素總數”,什么時候是“數組的元素下標”,這個問題對初學者很容易混淆。其實很簡單,定義的時候是“數組的元素總數”,操作調用具體某個元素的時候是“數組的元素下標”。 【46.3 什么情況下可以省略定義的元素總數?】 一維數組在定義時,如果預先給它填寫若干個初始化的數據,在語法上,也可以省略中括號\[N\]里面的元素總數N,這樣編譯器在編譯時會根據初始化的總數來自動識別和定義此一維數組實際元素總數,分配對應數量的內存RAM。比如: unsigned char y\[3\]={10,11,12}; //沒有省略元素總數的寫法 跟 unsigned char y\[\]={10,11,12}; //在初始化的情況下,省略了元素總數的寫法。 的意義是一樣的,都是合法的,都是C語言所允許的。注意,省略元素個數時必須要有初始化的數據,否則,編譯器不知道此數組的長度,可能導致編譯出錯。 這個功能在實際應用中有什么作用呢?在實際應用中,此項功能一般會用在常量數組里,而不是變量的數組里。當在數組定義的前面加上“const”或者“code”(針對51單片機)的關鍵詞時,原來“變量”的數組就會變成“常量”的數組,這時,如果把常量的數組用來作為某個轉換表格,此功能就很實用。因為作為轉換表格的常量數組,我們在編程程序的過程中,有可能隨時往里面添加數組,這個時候,不用我們刻意去計算和調整數組的元素總數N,給我們寫程序帶來了便利。對于這個功能的應用,大家先有一個感性的認識即可,暫時不用深入去了解,因為后續的章節還會講解這方面的內容。 【46.4 例程練習和分析。】 現在編寫一個程序來熟悉一下一維數組的使用。 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ unsigned char x\[3\]; //此處的3不是下標,而是元素總數,里面的3個變量沒有初始化 unsigned char y\[3\]={10,11,12}; //里面三個元素變量y\[0\],y\[1\],y\[2\]分別初始化為10,11,12 unsigned char i=0; //定義和初始化一個變量。用來做x數組的下標。 void main() //主函數 { x\[i\]=25; //此時下標i為0.相當于把25賦值給x\[0\] i=i+1; //i由0變成1. x\[i\]=26; //此時下標i為1.相當于把26賦值給x\[1\] i=i+1; //i由1變成2. x\[i\]=27; //此時下標i為2.相當于把27賦值給x\[2\] x\[i\]=x\[i\]+1; //此時x\[2\]自加1變成了28 View(x\[0\]); //把第1個數x\[0\]發送到電腦端的串口助手軟件上觀察。 View(x\[1\]); //把第2個數x\[1\]發送到電腦端的串口助手軟件上觀察。 View(x\[2\]); //把第3個數x\[2\]發送到電腦端的串口助手軟件上觀察。 View(y\[0\]); //把第4個數y\[0\]發送到電腦端的串口助手軟件上觀察。 View(y\[1\]); //把第5個數y\[1\]發送到電腦端的串口助手軟件上觀察。 View(y\[2\]); //把第6個數y\[2\]發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:25 十六進制:19 二進制:11001 第2個數 十進制:26 十六進制:1A 二進制:11010 第3個數 十進制:28 十六進制:1C 二進制:11100 第4個數 十進制:10 十六進制:A 二進制:1010 第5個數 十進制:11 十六進制:B 二進制:1011 第6個數 十進制:12 十六進制:C 二進制:1100 分析: 變量元素x\[0\]為25。 變量元素x\[1\]為26。 變量元素x\[2\]為28。 變量元素y\[0\]為10。 變量元素y\[1\]為11。 變量元素y\[2\]為12。 【46.5 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看