<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                相信大家對指針的用法已經很熟了,這里也不多說些定義性的東西了,只說一下指針使用中的注意事項吧。 一.在定義指針的時候注意連續聲明多個指針時容易犯的錯誤,例如int * a,b;這種聲明是聲明了一個指向int類型變量的指針a和一個int型的變量b,這時候要清醒的記著,而不要混淆成是聲明了兩個int型指針。 二.要避免使用未初始化的指針。很多運行時錯誤都是由未初始化的指針導致的,而且這種錯誤又不能被編譯器檢查所以很難被發現。這時的解決辦法就是盡量在使用指針的時候定義它,如果早定義的化一定要記得初始化,當然初始化時可以直接使用cstdlib中定義的NULL也可以直接賦值為0,這是很好的編程習慣。 三.指針賦值時一定要保證類型匹配,由于指針類型確定指針所指向對象的類型,因此初始化或賦值時必須保證類型匹配,這樣才能在指針上執行相應的操作。 四.void * 類型的指針,其實這種形式只是記錄了一個地址罷了,如上所說,由于不知道所指向的數據類型是什么所以不能進行相應的操作。其實void * 指針僅僅支持幾種有限的操作:1.與另外的指針進行比較,因為void *類型里面就是存的一個地址,所以這點很好理解;2.向函數傳遞void *指針或從函數返回void *指針,舉個例子吧,我們平時常用的庫函數qsort中的比較函數cmp(個人習慣于用這個名字)中傳遞的兩個參數就是const void *類型的,用過的應該很熟了;3.給另一個void * 類型的指針賦值。還是強調一下不能使用void * 指針操縱它所指向的對象。 五.不要將兩個指針變量指向同一塊動態內存。這個容易引起很嚴重的問題。如果將兩個指針變量指向同一塊動態內存,而其中一個生命期結束釋放了該動態內存,這個時候就會出現問題,另一個指針所指向的地址雖然被釋放了但該指針并不等于NULL,這就是所謂的懸垂指針錯誤,這種錯誤很難被察覺,而且非常嚴重,因為這時該指針的值是隨機的,可能指向一個系統內存而導致程序崩潰。但也就是因為值是隨機的,所以運行程序時有時正常有時崩潰,這一點要特別注意。 六.在動態delete釋放一個指針所指向的內存后注意將該指針置空。 七.在為一個指針再次分配內存之前一定要保證它原先沒有指向其他內存,防止出現內存泄漏。解決的辦法是我們必須判斷該指針是否為空,這時候就顯示出第六條的優勢,因為如果釋放某內存后相應指針不置空的話就不能為其分配新內存了。所以第六條很有必要。 八.雖然程序在退出main函數時會釋放所有內存空間,但對于大型程序最好還是某塊內存不用了立刻釋放,而不要指望系統最后的回收,因為內存泄漏會慢慢消耗系統資源直到內存不足而程序死掉。 九.在用new動態分配完內存之后一定要判斷是否分配成功,分配成功后才能使用。 最后提醒兩條:任何指針聲明后一定要初始化;任何指針用free或delete釋放之后一定要置空。 希望大家互相交流學習,本文博客地址: ?[**http://blog.csdn.net/iaccepted/article/details/6741600**](http://blog.csdn.net/iaccepted/article/details/6741600)
                  <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>

                              哎呀哎呀视频在线观看