<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 功能強大 支持多語言、二開方便! 廣告
                ### 數組 數組名是數組的首地址,這是一個常量. ~~~ int arr[10] = {0}; printf("%p\n", arr); printf("%p\n", &arr[0]); arr = 10; //無法修改 ~~~ ### 指針降級操作 ~~~ int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // printf("%p\n", arr); // printf("%p\n", &arr[0]); int *p = arr; //沒有&符號 *p = 100; *(p + 1) = 200; p[5] = 300; // *(p+5) for (int i = 0; i < 10; ++i) { printf("%d\n", p[i]); //指向數組的指針,當操作指針的時候,簡介的操作了數組 printf("%d\n", *(p + i)); } ~~~ ``` 100 100 200 200 3 3 4 4 5 5 300 300 7 7 8 8 9 9 10 10 ``` ### 數組指針操作 ~~~ int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *p = arr; //沒有&符號 p++; //這里將指針的地址+1 操作,就是向后移動了一個單元,4個字節的大小.也就是說此刻指針指向了數組中的第二個元素了 *p = 200; for (int i = 0; i < 10; ++i) { printf("%d\n", *(p + i)); } printf("-----"); for (int i = 0; i < 10; ++i) { printf("%d\n", arr[i]); } ~~~ 可以看到p的范圍越界了.因為p的地址已經發生了改變.其實這個指針跟數組已經沒有什么關系了,它跟野指針的效果是一樣的. 只不過它正好指向的值是數組中的地址而已. ``` 200 3 4 5 6 7 8 9 10 -282591133 //越界 ----- 1 200 3 4 5 6 7 8 9 10 ``` ### 例子1 ~~~ int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *p = arr; p++; *p = 100; //{1, 100, 3, 4, 5, 6, 7, 8, 9, 10}; p = 100; //野指針 // *p = 100; //非法操作野指針 p = &arr[9]; *p = 100; // {1, 100, 3, 4, 5, 6, 7, 8, 9, 100}; p--; *p = 20; //{1, 100, 3, 4, 5, 6, 7, 8, 20, 10}; p = &arr[0]; *p += 100; //{101, 100, 3, 4, 5, 6, 7, 8, 20, 10}; p += 100; int len = p - arr; //指針操作,一般不進行乘除,只使用加減 printf("len = %d\n",len); //在內存中相差400個,一共相差100個int的大小,也就是100 for (int i = 0; i < 10; ++i) { printf("%d\n", arr[i]); } ~~~ ``` len = 100 101 100 3 4 5 6 7 8 20 100 ``` ### 例子2 ~~~ int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *p = arr; p = &arr[9]; int len = p - arr; printf("len = %d\n", len); for (p = arr; p <= &arr[9]; ++p) { printf("%d\n", *p); } ~~~ ``` len = 9 1 2 3 4 5 6 7 8 9 10 ```
                  <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>

                              哎呀哎呀视频在线观看