<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之旅 廣告
                【65.1 函數的參數入口。】 要往函數內部傳遞信息,主要有兩類渠道。第一類是全局變量。第二類是函數的參數入口,而參數入口可以分為“普通局部變量”和“指針”這兩類。“普通局部變量”的參數入口一次只能傳一個數據,如果一個數組有幾十個甚至上百個數據,此時“普通局部變量”就無能為力,這時不可能也寫幾十個甚至上百個入口參數吧(這會累壞程序員),針對這種需要輸入批量數據的場合,“指針”的參數入口就因此而生,完美解決了此問題,僅用一個“指針”參數入口就能解決一個數組N個數據的入口問題。那么,什么是函數的參數入口?例子如下: //函數聲明 unsigned long PingJunZhi(unsigned char a,unsigned char b,unsigned char c,unsigned char d); //變量定義 unsigned char Gu8Buffer\[4\]={2,6,8,4}; //4個變量分別是2,6,8,4。 unsigned long Gu32PingJunZhi; //求平均值的結果 //函數定義 unsigned long PingJunZhi(unsigned char a,unsigned char b,unsigned char c,unsigned char d) { unsigned long u32PingJunZhi; u32PingJunZhi=(a+b+c+d)/4; return u32PingJunZhi; } void main() //主函數 { //函數調用 Gu32PingJunZhi=PingJunZhi(Gu8Buffer\[0\],Gu8Buffer\[1\],Gu8Buffer\[2\],Gu8Buffer\[3\]); } 上面是一個求4個數據平均值的函數,在這個函數中,函數小括號的(unsigned char a,unsigned char b,unsigned char c,unsigned char d)就是4個變量的“普通局部變量”參數入口,剛才說到,如果一個數組有上百個變量,這種書寫方式是很累的。如果改用“指針”入口參數的方式,例子如下: //函數聲明 unsigned long PingJunZhi(unsigned char \*pu8Buffer); //變量定義 unsigned char Gu8Buffer\[4\]={2,6,8,4}; //4個變量分別是2,6,8,4。 unsigned long Gu32PingJunZhi; //求平均值的結果 //函數定義 unsigned long PingJunZhi(unsigned char \*pu8Buffer) { unsigned long u32PingJunZhi; u32PingJunZhi=(pu8Buffer\[0\]+pu8Buffer\[1\]+pu8Buffer\[2\]+pu8Buffer\[3\])/4; return u32PingJunZhi; } void main() //主函數 { //函數調用 Gu32PingJunZhi=PingJunZhi(&Gu8Buffer\[0\]);//等效于Gu32PingJunZhi=PingJunZhi(Gu8Buffer) } 上面例子中,僅用一個(unsigned char \*pu8Buffer)指針入口參數,就可以達到輸入4個變量的目的(這4個變量要求是同在一個數組內)。 【65.2 const在指針參數“入口”中的作用。】 指針在函數的參數入口中,既可以做“入口”,也可以做“出口”,而C語言為了區分這兩種情況,提供了const這個關鍵字來限定權限。如果指針加了const前綴,就為指針的權限加了緊箍咒,限定了此指針只能作為“入口”,而不能作為“出口”。如果沒有加了const前綴,就像本節的函數例子,此時指針參數既可以作為“入口”,也可以作為“出口”。加const關鍵字有兩個意義,一方面是方便閱讀,通過const就知道此接口的“入口”和“出口”屬性,另一方面,是為了代碼的安全,對于只能作為“入口”的指針參數一旦加了const限定,萬一我們不小心在函數內部對const限定的指針所關聯的數據進行了更改(“更改”就意味著“出口”),C編譯器在編譯的時候就會有提醒或者報錯,及時讓我們發現程序的bug(程序的漏洞)。這部分的內容后續章節會講到,大家先有個大概的了解,本節暫時不深入講。 【65.3 例程練習和分析。】 現在編一個練習程序。 /\*---C語言學習區域的開始。-----------------------------------------------\*/ //函數聲明 unsigned long PingJunZhi(unsigned char \*pu8Buffer); //變量定義 unsigned char Gu8Buffer\[4\]={2,6,8,4}; //4個變量分別是2,6,8,4。 unsigned long Gu32PingJunZhi; //求平均值的結果 //函數定義 unsigned long PingJunZhi(unsigned char \*pu8Buffer) { unsigned long u32PingJunZhi; u32PingJunZhi=(pu8Buffer\[0\]+pu8Buffer\[1\]+pu8Buffer\[2\]+pu8Buffer\[3\])/4; return u32PingJunZhi; } void main() //主函數 { //函數調用 Gu32PingJunZhi=PingJunZhi(&Gu8Buffer\[0\]);//等效于Gu32PingJunZhi=PingJunZhi(Gu8Buffer) View(Gu32PingJunZhi); //把第1個數Gu32PingJunZhi發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:5 十六進制:5 二進制:101 分析: 平均值變量Gu32PingJunZhi為5。 【65.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>

                              哎呀哎呀视频在线观看