<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國際加速解決方案。 廣告
                【68.1 為函數接口指針“定向”的const關鍵詞。】 在函數接口處的指針,是一個雙向口,既可以作為“輸入”也可以作為“輸出”,換句話說,既能“讀”也能“寫”(被更改),這樣一來,當你把一個數組(或者某變量)通過指針引入到函數內部的時候,當執行完此函數,這個數組的數值可能已經悄悄發生了更改(“是否被更改”取決于函數內部的具體代碼),進來時是“摩托”出來后可能已變成“單車”,而實際項目上,很多時候我們只想傳遞數組(或者某變量)的數值,并不想數組(或者某變量)本身發生變化,這個時候,本節的主角const關鍵詞就派上用場了。 只要在函數接口的指針前面加上const關鍵詞,原來雙向的指針就立刻變成了單向,只能輸入不能輸出。這個const有兩個好處。第一個好處是方便閱讀,通過const就知道此接口的“入口”和“出口”屬性,如果你是用別人已經封裝好的函數,一旦發現接口指針帶了const標簽,就足以說明這個指針只能作為輸入接口,不用擔心輸入數據被意外修改。第二個好處是確保數據的安全,函數接口指針一旦加了const限定,萬一你不小心在函數內部對指針所關聯的數據進行了更改(“更改”就意味著“出口”),C編譯器在編譯的時候就會報錯讓你編譯失敗,及時讓你發現程序的bug(程序的漏洞),這是編譯器層面的一道防火墻。例子如下: unsigned char ShuRu(const unsigned char \*pu8Data) { unsigned char a; a=\*pu8Data; //這行代碼是合法的,是指針所關聯數據的“讀”操作。 \*pu8Data=a; //這行代碼是非法的,是指針所關聯數據的“寫”操作,違背const的約束。 return a; } 【68.2 例程練習和分析。】 在前面第65節講函數入口的時候,用到一個求數組平均值的程序例子,這個數組是僅僅作為輸入用的,不需要被更改,因此,現在借本節講const的機會,為此函數的接口指針補上一個const關鍵詞,讓該函數更加科學規范,程序如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ unsigned long PinJunZhi(const unsigned char \*pu8Buffer); //指針前增加一個const關鍵詞 unsigned char Gu8Buffer\[4\]={2,6,8,4}; unsigned long Gu32PinJunZhi; unsigned long PinJunZhi(const unsigned char \*pu8Buffer) //指針前增加一個const關鍵詞 { unsigned long u32PinJunZhi; u32PinJunZhi=(pu8Buffer\[0\]+pu8Buffer\[1\]+pu8Buffer\[2\]+pu8Buffer\[3\])/4; //求平均值 return u32PinJunZhi; } void main() //主函數 { Gu32PinJunZhi=PinJunZhi(&Gu8Buffer\[0\]);//不用擔心Gu8Buffer數組的數據被意外更改。 View(Gu32PinJunZhi); //把第1個數Gu32PinJunZhi發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:5 十六進制:5 二進制:101 分析: 平均值變量Gu32PinJunZhi為5。 【68.3 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看