<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                【53.1 函數的十大關聯部件。】 函數是什么?我很難用一句話給它下定義,哪怕我真能用一句話定義了,初學者也很難從一句話的定義中“格”出函數之理。之所以函數有如此玄機,確實因為它包羅萬象,涉及的內容非常多,就像要我去定義什么是中國,我也沒法用一句話去定義,只有長大了慢慢了解它的地理文化歷史,你才會對咱中國有深刻的認識。函數也是如此,雖然我不能用一句話定義函數,但是函數跟十大部件有關,只要今后不斷學習和運用,對十大部件各個擊破直到全部“通關”,總有一天你會感悟到函數的精髓。現在先把十大部件列出來,讓大家有一個感性的認識,它們是:函數體,函數接口,return語句,棧,全局變量,普通局部變量,靜態局部變量,單個變量的指針,數組的指針,結構體的指針。本節講的“使用函數的三要素和執行順序”就是屬于“函數體”這個部件的內容。 【53.2 使用函數的三要素。】 有的人習慣把函數稱為程序,比如主程序,子程序,這時的主程序對應主函數,子程序對應子函數,是一回事,只是每個人的表達習慣不一樣而已。使用函數的三要素是聲明,定義,調用。每次新構造一個函數時,盡量遵守這個三個要素來做就可以減少一些差錯。什么叫函數的聲明,定義,調用?為了讓大家有一個感性的認識,請先看下面這個例子: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void HanShu(void); //子函數聲明的第一區域 unsigned char a; //全局變量定義的第二區域 unsigned char b; unsigned char c; void HanShu(void) //子函數定義的第三區域 { a++; //子函數的代碼語句 b=b+5; c=c+6; } void main() //主函數 { a=0; b=0; c=0; HanShu() ; //子函數被調用的第四區域 c=a+b; while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 分析:上述例子中,從書寫代碼區域的角度來尋找函數的大概規律,從上往下: 第一區域:寫子函數HanShu聲明。 第二區域:全局變量的定義。 第三區域:子函數HanShu的定義。 第四區域:在main函數里對子函數HanShu的調用。 【53.3 子函數被其它函數調用時候的執行順序。】 子函數被其它函數調用時,子函數的名字就相當于一個跳轉地址,而子函數的定義部分就是要跳轉的實際地址,單片機在主函數里遇到子函數名字,就直接跳轉到子函數定義那里執行子函數內部的代碼,執行完子函數后再返回到主函數,此時返回到主函數哪里呢?答:因為子函數已經被執行了一次,所以返回到主函數中的子函數名字后面,然后繼續往下執行main函數其它剩余的代碼。請看下面這個代碼的執行順序,一目了然: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void HanShu(void); //子函數的聲明 void HanShu(void) //子函數的定義 { 語句1; 語句2; } void main() //主函數 { 語句3; HanShu() ; //子函數的被調用 語句4; while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 執行順序分析:單片機從主函數main那里進來往下執行,先執行“語句3”,接著遇到HanShu名字的跳轉地址,然后馬上跳轉到HanShu的定義部分,執行“語句1”,“語句2”,執行完子函數HanShu的定義部分,就馬上返回到主函數,繼續執行HanShu名字后面的“語句4”。整個執行語句的先后順序如下: 語句3; 語句1; 語句2; 語句4; 【53.4 例程練習和分析。】 現在編寫一個練習程序來體驗一下函數的使用。 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void HanShu(void); //子函數聲明的第一區域 unsigned char a; //全局變量定義的第二區域 void HanShu(void) //子函數定義的第三區域 { a++; //子函數的代碼語句 } void main() //主函數 { a=0; a++; HanShu() ; //子函數被調用的第四區域 a++; View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:3 十六進制:3 二進制:11 分析: 變量a為3。單片機從main主函數進來,主函數里有2條“a++”,再加上子函數里也有1條“a++”,因此累加了3次,從0變成了3. 【53.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>

                              哎呀哎呀视频在线观看