1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        32 通過指針引用數(shù)組

        共 1841字,需瀏覽 4分鐘

         ·

        2021-07-16 15:32

        點(diǎn)擊藍(lán)字

        關(guān)注我們

        DRAGON BOAT FESTIVAL

        01 數(shù)組元素的指針


        指針變量既可以指向變量,也可以指向數(shù)組元素。所謂數(shù)組元素的指針就是數(shù)組元素的地址。

        引用數(shù)組元素可以用下標(biāo)法,也可以用指針法,即通過指向數(shù)組元素的指針找到所需的元素。

        使用指針法能使目標(biāo)程序質(zhì)量高(占內(nèi)存少,運(yùn)行速度快)。

        在C語言中,數(shù)組名(不包括形參數(shù)組名,形參數(shù)組并不占據(jù)實(shí)際的內(nèi)存單元)代表數(shù)組中首元素的地址。


        02 在引用數(shù)組元素時(shí)指針的運(yùn)算


        在一定條件下允許對(duì)指針進(jìn)行加和減的運(yùn)算。

        當(dāng)指針指向數(shù)組元素時(shí),譬如,指針變量p指向數(shù)組元素a[0],我們希望用p+1表示指向下一個(gè)元素a[1]。

        在指針指向數(shù)組元素時(shí),可以對(duì)指針進(jìn)行以下運(yùn)算:

        (1)加一個(gè)整數(shù),如p+1。
        (2)減一個(gè)整數(shù),如p-1。
        (3)自加運(yùn)算,如p++,++p。
        (4)自減運(yùn)算,如p--,--p。
        (5)兩個(gè)指針相減,如p1-p2(只有p1和p2都指向同一數(shù)組中的元素時(shí)才有意義)。


        在 C 語言中,指針變量加 1 表示跳過該指針變量對(duì)應(yīng)的基類型所占字節(jié)數(shù)大小的空間。指向數(shù)組元素的指針,其基類型為數(shù)組元素類型,指針加 1 表示跳過一個(gè)數(shù)組元素空間,指向下一個(gè)數(shù)組元素。

        例如:

        int *p,a[10];p=a; //相當(dāng)于 p=&a[0];


        說明:數(shù)組名 a 相當(dāng)于數(shù)組首元素 a[0] 的地址,即 a 等價(jià)于 &a[0]。

        上述語句定義了整型指針變量 p 和整型數(shù)組 a,并使 p 初始指向數(shù)組首元素 a[0]。


        03 通過指針引用數(shù)組元素


        當(dāng)指針變量和數(shù)組元素建立聯(lián)系后,可通過以下方式訪問數(shù)組元素。


        1. 間接訪問:*(數(shù)組名+i); 的形式。其中,i 為整數(shù),其范圍為:0<i<N,N 為數(shù)組大小。數(shù)組名 a 為首元素的地址,是地址常量,a+i 表示跳過 i 個(gè)數(shù)據(jù)元素的存儲(chǔ)空間,即(a+i)表示 a[i] 元素的地址,從而 *(a+i) 表示 a[i]。

        如果指針變量 p 被初始化為 a 之后,不再改變,那么也可以使用 *(p + i) 的形式訪問 a[i],不過這樣就失去了使用指針變量訪問數(shù)組元素的意義。

        2.間接訪問:*(指針變量);的形式。當(dāng)執(zhí)行語句 p=a; 后,可以通過改變 p 自身的值(可通過自增、自減運(yùn)算),從而使得 p 中保存不同的數(shù)組元素的地址,進(jìn)而通過 *p 訪問該數(shù)組中不同的元素。這是使用指針訪問數(shù)組元素較常用的形式。例如,如下代碼通過使用指針變量的移動(dòng)來遍歷輸出數(shù)組中的每個(gè)元素。

        for (p=a;p<a+N;p++) //用p的移動(dòng)范圍控制循環(huán)次數(shù)    printf ("%d\t",*p);


        確定 p 指針移動(dòng)的起止地址,即循環(huán)控制表達(dá)式的確定是使用指針訪問數(shù)組元素的關(guān)鍵。

        p 初始指向 a[0],即 p=&a[0]; 或 p=a;。
        p 終止指向 a[N-1],即 p=&a[N-l]; 或 p=a+N-1;。

        故可得 p 的移動(dòng)范圍為:p>=a && p<=a+N-1;,而 p<=a+N-1 通常寫成 p<a+N;,由此可得循環(huán)條件為:for (p=a;p<a+N;p++)。




        04 用數(shù)組名作函數(shù)參數(shù)


        C語言調(diào)用函數(shù)時(shí)虛實(shí)結(jié)合的方法都是采用“值傳遞”方式,當(dāng)用變量名作為函數(shù)參數(shù)時(shí)傳遞的是變量的值,當(dāng)用數(shù)組名作為函數(shù)參數(shù)時(shí)。

        由于數(shù)組名代表的是數(shù)組元素地址,因此傳遞的值是地址,所以要去形參為指針變量。

        實(shí)參數(shù)組名代表一個(gè)固定的地址,或者說是指針變量,但形參數(shù)組名并不是一個(gè)固定的地址,而是按指針變量處理。




        05 通過指針引用多維數(shù)組


        多維數(shù)組元素的地址
        (1)性質(zhì)與二維數(shù)組差不多,但需要注意的是,多維數(shù)組由于分配內(nèi)存情況不同,所顯示的地址可能是不同的。

        指向多維數(shù)組元素的指針變量
        (1)指向數(shù)組元素的指針變量。
        (2)指向由m個(gè)元素組成的一維數(shù)組的指針變量。

        用指向數(shù)組的指針作函數(shù)參數(shù)
        (1)一維數(shù)組名可以作為函數(shù)參數(shù),多維數(shù)組名也可以作函數(shù)參數(shù)。
        (2)用指針變量作形參,以接收實(shí)參數(shù)組名傳遞來的地址,有兩個(gè)方法:
        ①用指向變量的指針變量。
        ②用指向一維數(shù)組的指針變量。





        球分享

        球點(diǎn)贊

        球在看

        瀏覽 66
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产又爽 又黄 免费动漫 | 欧美,操视频 | 日韩中文字幕一区 | 久久三级片成年人 | 非洲一级黄色录像 | 俺去啦俺去也 | 97国产在线视频 | 涩涩视频在线 | 婷婷久久青草热一区二区 | 九一色视频 |