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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                【55.1 函數和變量的命名規則。】 函數的名字和變量的名字一樣,一般是由“字母,數字,下劃線”三者組成。第1個字符不能是數字,必須是字母或者下劃線“\_”,后面緊跟的第2個字符開始可以是數字。在C語言中名字所用的字母是區分大小寫的。可以用下劃線“\_”,但是不可以用橫杠“-”。名字不能跟C編譯系統已經征用的關鍵字重名,比如不能用“unsigned ”,“char”,“static”等系統關鍵詞,跟古代時不能跟皇帝重名一樣,要避尊者諱。 【55.2 函數的作用和分類。】 函數的作用。通常把一些可能反復用到的算法或者過程封裝成一個函數,函數就是一個模塊,給它輸入特定的參數,就可以輸出想要的結果,比如一個加法函數,只要輸入加數和被加數,然后就會輸出相加結果之和,里面具體的算法過程只要寫一次就可以重復調用,極大的節省單片機程序容量,也節省程序開發人員的工作量。還有一類函數,它從封裝上看無所謂“輸入輸出”,這類函數往往是針對某一種可能重復使用的“過程”。 函數的分類。暫時排除指針的情況下(指針的內容后續章節會講到),從輸入輸出的角度來看,有四種常見的書寫類型。分別是“無輸出無輸入,無輸出有輸入,有輸出無輸入,有輸出有輸入”。“輸出”是看函數名的前綴,前綴如果是void表示“無輸出”,否則就是“有輸出”。“輸入”是看函數名括號里的內容,如果是void或者是空著就表示“無輸入”,否則就是“有輸入”。“輸出”和“輸入”是比較通俗的說法,專業一點的說法是,“有輸出”表示函數“有返回”,“無輸出”表示函數“無返回”。“有輸入”表示函數“有形參”,“無輸入”表示函數“無形參”。下面舉一個加法函數的例子,分別用四種不同的函數類型來實現,通過對比它們之間的差別,來體會它們在書寫方面有哪些不同,又有哪些規律。 **【55.3 第1類:“無輸出****”“無輸入”的函數。】** unsigned char a; //此變量用來接收最后相加結果的和。 unsigned char g=2; unsigned char h=3; void HanShu(void) //“無輸出”“無輸入”函數的定義。 { a=g+h; } main() { HanShu(); //函數的調用。此處括號內的形參void要省略,否則編譯不通過。 } 分析:void HanShu(void),此函數名的前綴是void,括號內也是void,屬于“無輸出”“無輸入”函數。這類函數表面看是“無輸出”“無輸入”,其實內部是通過全局變量來輸入輸出的,比如上面的例子就是靠a,g,h這三個全局變量來傳遞信息,只不過這類表達方式比較隱蔽,沒有那么直觀。 【55.4 第2類:“無輸出”“有輸入”的函數。】 unsigned char b; //此變量用來接收最后相加結果的和。 void HanShu(unsigned char i,unsigned char k) //“無輸出”“有輸入”函數的定義。 { b=i+k; } main() { HanShu(2,3); //函數的調用。 } 分析:void HanShu(unsigned char i,unsigned char k),此函數名的前綴是void,括號內是(unsigned char i,unsigned char k),屬于“無輸出”“有輸入”的函數。括號的兩個變量i和k是函數內的局部變量,也是跟對外的橋梁接口,它們有一個專業的名稱叫形參。外部要調用此函數時,只要給括號填入對應的變量或者數值,這些變量和數值就會被復制一份傳遞給作為函數形參的局部變量(比如本例子中的i和k),從而外部調用者跟函數內部就發生了數據信息的傳遞。這種書寫方式的特點是把輸入接口封裝了出來。 【55.5 第3類:“有輸出”“無輸入”的函數。】 unsigned char c; //此變量用來接收最后相加結果的和。 unsigned char m=2; unsigned char n=3; unsigned char HanShu(void) //“有輸出”“無輸入”函數的定義。 { unsigned char p; p=m+n; return p; } main() { c=HanShu(); //函數的調用。此處括號內的形參void要省略,否則編譯不通過。 } 分析:unsigned char HanShu(void),此函數名的前綴是unsigned char類型,括號內是void,屬于“有輸出”“無輸入”的函數。函數前綴的unsigned char表示此函數最后退出時會返回一個unsigned char類型的數據給外部調用者。而且這類函數內部必須有一個return語句配套,表示立即退出當前函數并且返回某個變量或者常量的數值給外部調用者。這種書寫方式的特點是把輸出接口封裝了出來。 【55.6 第4類:“有輸出”“有輸入”的函數。】 unsigned char d; //此變量用來接收最后相加結果的和。 unsigned char HanShu(unsigned char r,unsigned char s) //“有輸出”“有輸入”函數的定義 { unsigned char t; t=r+s; return t; } main() { d=HanShu(2,3); //函數的調用。 } 分析:unsigned char HanShu(unsigned char r,unsigned char s),此函數名的前綴是unsigned char類型,括號內是(unsigned char r,unsigned char s),屬于“有輸出”“有輸入”的函數。輸入輸出的特點跟前面介紹的函數一樣,不多講。這種書寫方式的特點是把輸出和輸入接口都封裝了出來。 【55.7 函數在被“調用”時需要注意的地方。】 函數的三要素是“聲明,定義,調用”。函數在被“調用”的時候,對于“無輸入”的函數,形參的void關鍵詞要省略,否則編譯不通過,這里僅僅是指在函數在被“調用”的時候。 【55.8 例程練習和分析。】 現在編寫一個練習程序,要求編寫4個不同“輸入輸出”封裝的函數,它們每個函數所實現的功能都是一樣的,都是加法的算法函數,它們之間僅僅是外觀的封裝接口不同而已。 /\*---C語言學習區域的開始。-----------------------------------------------\*/ void hanshu\_1(void); void hanshu\_2(unsigned char i,unsigned char k); unsigned char hanshu\_3(void); unsigned char hanshu\_4(unsigned char r,unsigned char s); unsigned char a; //此變量用來接收第1個函數最后相加結果的和。 unsigned char g=2; unsigned char h=3; unsigned char b; //此變量用來接收第2個函數最后相加結果的和。 unsigned char c; //此變量用來接收第3個函數最后相加結果的和。 unsigned char m=2; unsigned char n=3; unsigned char d; //此變量用來接收第4個函數最后相加結果的和。 void hanshu\_1(void) //第1類:“無輸出”“無輸入”。 { a=g+h; } void hanshu\_2(unsigned char i,unsigned char k) //第2類:“無輸出”“有輸入”。 { b=i+k; } unsigned char hanshu\_3(void) //第3類:“有輸出”“無輸入”。 { unsigned char p; p=m+n; return p; } unsigned char hanshu\_4(unsigned char r,unsigned char s) //第4類:“有輸出”“有輸入”。 { unsigned char t; t=r+s; return t; } void main() //主函數 { hanshu\_1(); //第1類:“無輸出”“無輸入”的函數調用。這里的形參的void要省略。 hanshu\_2(2,3); //第2類:“無輸出”“有輸入”的函數調用。 c=hanshu\_3(); //第3類:“有輸出”“無輸入”的函數調用。這里的形參的void要省略。 d=hanshu\_4(2,3); //第4類:“有輸出”“有輸入”的函數調用。 View(a); //把a發送到電腦端的串口助手軟件上觀察。 View(b); //把b發送到電腦端的串口助手軟件上觀察。 View(c); //把c發送到電腦端的串口助手軟件上觀察。 View(d); //把d發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:5 十六進制:5 二進制:101 第2個數 十進制:5 十六進制:5 二進制:101 第3個數 十進制:5 十六進制:5 二進制:101 第4個數 十進制:5 十六進制:5 二進制:101 分析: 變量a為5。 變量b為5。 變量c為5。 變量d為5。 【55.9 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看