• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 200, comments - 8, trackbacks - 0, articles - 0

            2維數組和指針差異

            Posted on 2012-01-28 19:40 鑫龍 閱讀(506) 評論(0)  編輯 收藏 引用 所屬分類: C
            數組和指針概念很容易讓初學者混淆,這里把我所知道的概括一下,希望對大家有所幫助。

            一維數組和一級指針的相同和差異

            一維數組的名字大部分情況下可以當成一個常指針來看,也就是說:

            int a[3] int * const p;

            則數組名a可以在大部分p能用的地方使用,有兩種情況比較特殊:

            1. p可以在定義是初始化一個地址如:int *p const = new int[100];,而且這也是唯一的初始化他的機會。而數組則是有操作系統載入可執行文件時初始化內存空間的。
            2. sizeof運算符對p計算將獲得指針的長度(現在一般為4),而對數組名則得到數組占有的所有字節數。

            在內存排布上,一維數組和一階指針指向的內存是完全一樣的。

            高維數組和高階指針

            對于高維數組(以二維為例,其他完全一樣),情況和一維數組完全不一樣。例如對于數組和指針:

            int a[3][4] int**p;

            他們就沒有任何可比性。初學者從一維數組中的知識簡單的推斷出a是一個等價于int**的東西,*a就可以得到一個 int*的值,這其實是完全錯誤的。

            從內存排布上,數組按照先低維后高維的順序一次排列數組的每個元素。其中低維到高維是指定義數組時,離數組名越近的維為低維,反之為高維,例如上面這個數組,3就是低維的維數,4為高維的維數,因此,在內存中,上面這個數組占有12個int單元,所有單元靠在一起,其順序則為

            a[0][0],a[0][1],a[0][2],a[0][3] a[1][0],a[1][1],a[1][2],a[1][3] a[2][0],a[2][1],a[2][2],a[2][3]

            如果a是一個和二階指針等價的常量,那么他的值應該指向一個指針數組才對,而實際上這樣的指針數組是不存在。

            從前面這個排布還可以看出一個問題,在排列過程中,數組的最低維不確定是沒有關系的,但是為了安排好數組元素的先后順序,高維的維數必須確定,也就是說在使用數組類型來定義指針時,必須首先確定高維,例如:

            int (*p)[3] = new int[4][3]

            是可以的,但是

            int (*p)[] = new int[4][3]

            就不行。

            回到一維數組

            仔細考慮一維數組和多維數組,是不是編譯器對一維數組特殊處理了?其實也不是,數組名其實代表的是數組對象也就是其第一個元素的地址,從這個角度講,一維數組名a代表了a[0]的地址,二維數組名a代表了a[0][0]的地址,高維數組的名字從這個意義講更接近1階指針.

            人妻精品久久无码专区精东影业| 国产精品久久久久久吹潮| 99久久婷婷国产一区二区| 久久99久久成人免费播放| 久久亚洲中文字幕精品一区四| 亚洲欧美伊人久久综合一区二区| 亚洲国产精品人久久| 97精品伊人久久大香线蕉| 久久精品视频免费| 无码专区久久综合久中文字幕| 7777久久亚洲中文字幕| 1000部精品久久久久久久久| 狠狠精品久久久无码中文字幕 | 伊人久久久AV老熟妇色| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久天堂AV综合合色蜜桃网| 免费一级欧美大片久久网| 亚洲狠狠久久综合一区77777| 久久精品国产久精国产果冻传媒| 久久久久久噜噜精品免费直播| 亚洲国产成人久久精品动漫| 青草国产精品久久久久久| 久久免费视频1| 亚洲精品乱码久久久久久久久久久久 | 国产成人精品久久免费动漫| 色欲综合久久中文字幕网| 色综合久久久久综合体桃花网| 久久毛片一区二区| 久久久久久久精品妇女99| 久久夜色精品国产亚洲| 久久这里只精品99re66| 中文字幕久久亚洲一区| 亚洲va中文字幕无码久久| 一本久久a久久精品亚洲| 欧美午夜精品久久久久免费视| 亚洲AV日韩精品久久久久| 久久精品国产亚洲AV无码偷窥| 99久久国产热无码精品免费久久久久 | 久久精品国产亚洲AV电影| 久久久精品人妻一区二区三区四| 久久超乳爆乳中文字幕|