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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                C 指針是一個用數值表示的地址。因此,您可以對指針執行算術運算。可以對指針進行四種算術運算:++、--、+、-。 假設**ptr**是一個指向地址 1000 的整型指針,是一個 32 位的整數,讓我們對該指針執行下列的算術運算: ~~~ ptr++ ~~~ 在執行完上述的運算之后,**ptr**將指向位置 1004,因為 ptr 每增加一次,它都將指向下一個整數位置,即當前位置往后移 4 字節。這個運算會在不影響內存位置中實際值的情況下,移動指針到下一個內存位置。如果**ptr**指向一個地址為 1000 的字符,上面的運算會導致指針指向位置 1001,因為下一個字符位置是在 1001。 我們概括一下: * 指針的每一次遞增,它其實會指向下一個元素的存儲單元。 * 指針的每一次遞減,它都會指向前一個元素的存儲單元。 * 指針在遞增和遞減時跳躍的字節數取決于指針所指向變量數據類型長度,比如 int 就是 4 個字節。 ## 遞增一個指針 我們喜歡在程序中使用指針代替數組,因為變量指針可以遞增,而數組不能遞增,數組可以看成一個指針常量。下面的程序遞增變量指針,以便順序訪問數組中的每一個元素: 如下實例 ``` #include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr; /* 指針中的數組地址 */ ptr = var; for ( i = 0; i < MAX; i++) { printf("存儲地址:var[%d] = %p\n", i, ptr ); printf("存儲值:var[%d] = %d\n", i, *ptr ); /* 指向下一個位置 */ ptr++; } return 0; } ``` 當上面的代碼被編譯和執行時,它會產生下列結果: ~~~ 存儲地址:var[0] = e4a298cc 存儲值:var[0] = 10 存儲地址:var[1] = e4a298d0 存儲值:var[1] = 100 存儲地址:var[2] = e4a298d4 存儲值:var[2] = 200 ~~~ ## 遞減一個指針 同樣地,對指針進行遞減運算,即把值減去其數據類型的字節數,如下所示: ``` #include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr; /* 指針中最后一個元素的地址 */ ptr = &var[MAX-1]; for ( i = MAX; i > 0; i--) { printf("存儲地址:var[%d] = %p\n", i-1, ptr ); printf("存儲值:var[%d] = %d\n", i-1, *ptr ); /* 指向下一個位置 */ ptr--; } return 0; } ``` 當上面的代碼被編譯和執行時,它會產生下列結果: ~~~ 存儲地址:var[2] = 518a0ae4 存儲值:var[2] = 200 存儲地址:var[1] = 518a0ae0 存儲值:var[1] = 100 存儲地址:var[0] = 518a0adc 存儲值:var[0] = 10 ~~~ ## 指針的比較 指針可以用關系運算符進行比較,如 ==、。如果 p1 和 p2 指向兩個相關的變量,比如同一個數組中的不同元素,則可對 p1 和 p2 進行大小比較。 下面的程序修改了上面的實例,只要變量指針所指向的地址小于或等于數組的最后一個元素的地址 &var\[MAX - 1\],則把變量指針進行遞增: ``` #include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr; /* 指針中第一個元素的地址 */ ptr = var; i = 0; while ( ptr <= &var[MAX - 1] ) { printf("存儲地址:var[%d] = %p\n", i, ptr ); printf("存儲值:var[%d] = %d\n", i, *ptr ); /* 指向上一個位置 */ ptr++; i++; } return 0; } ``` 當上面的代碼被編譯和執行時,它會產生下列結果: ~~~ 存儲地址:var[0] = 0x7ffeee2368cc 存儲值:var[0] = 10 存儲地址:var[1] = 0x7ffeee2368d0 存儲值:var[1] = 100 存儲地址:var[2] = 0x7ffeee2368d4 存儲值:var[2] = 200 ~~~
                  <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>

                              哎呀哎呀视频在线观看