• <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>
            隨筆 - 4, 文章 - 0, 評論 - 4, 引用 - 0
            數據加載中……

            迷糊的多維數組的地址

             

                    為什么要寫這個?因為這個東西有點混亂,至少我第一次接觸的時候是這樣的。或許以后還會,所以記下來需要的人一起看吧。

                    直接上主題,我做事就是很直接,當然也會很啰嗦,下面你將會一并體驗到。

            int count[2][3] = {{1,2,3},{4,5,6}};

            count //數組count[0][0]的地址。

            count+1//數組count[0][0]行數的偏移量為1的地址,即count[1][0]的地址。

            *(count+1)//等效于count+1。

            *(count+1)+1//count[0][0]行數偏移量為1,列數偏移量為1的地址,即count[1][1]的地址。

            **(count+1)//count[1][0]的值。注意這里是2個“*”。

            *(*(count+1)+1)//count[1][1]的值,這里也可以寫成**(count+1)+1,結果都是一樣的,反正就是要2個“*”。說到這里有的人可能就覺得奇怪了,上面不是說了“*(count+1)//等效于count+1”那*(*(count+1)+1)能不能寫成*((count+1)+1)呢?答案是很肯定的:不能。為什么呢?我的理解是:如果單純地表示行地址的時候有無“*”都無所謂,反正是一行的地址,同時也是一行的第一列元素的地址。*(*(count+1)+1)含義是先取得第1行的地址,然后再在第1行內偏移1列后,取得地址所存儲的值4。如果寫成*((count+1)+1)則含義變成:行數偏移1后再偏移1后的地址。
                   這里有點饒頭,多看幾次就會明白了。當然按照我的理解來看也是有一定風險的,因為我可能理解錯了。不過這些結果我都試驗過的,絕對不會錯的。

            *(count+1)[1]//count[1][1]的值。首先用*(count+1)取得行地址,然后用[1]直接獲取這個地址中第1號元素的值。這個表達式等效于*(count[1]+1),同時也等效于*(*(count+1)+1)。~~撲通~~已經有人徹底暈倒了。這里的“*(count+1)”,“count[1]”都是為了有效地進行行地址定位,因為只有先找到行地址才能進列定位嘛!

            最后總結:

            1.    如果你是想獲得多維數組中一行的地址則使用不使用“*”都無所謂。前提是沒有“[]”出現。

            2.    如果你是想獲得多維數組中元素的地址則首先得確定好此元素的行地址(使用“*”,比如*(count+1)這樣就確定了是第1行的地址),然后再進行列偏移。

            3.    如果你是想獲得多維數組中元素的值,則可以在地址之前加“*”一般整個表達式是2個“*”,因為確定某一行的時候的那個“*”是必不可少的。當然也可以使用帶有“[]”的方式,這個方式里面需一個“*”和一個“[]”就可以獲得數組的值。如果你說使用count[1][1]這樣的方式不是更好么?你說的一點都沒錯,不過我這里主要討論的是與地址相關的內容。不過要順帶說一下如果使用雙“[]”的情況下表達式前加不加“*”都是無所謂的。

            再一次總結:

            1. 多維數組的地址中,重點就是進行行地址定位,有2種方式,第一種:加“*”eg:*(count+1)。第二種:使用“[]”eg:count[1]。
                   這里有一個問題啊,* count[1]是地址還是值啊?如果你的回答是地址那請再回頭看一下最后總結第一條。這里的* count[1]表示的是一個值,因為這條語句的含義是取count[1]的值,可是count[1]只是一個地址,只進行了行定位,偏要它交出一個值出來,只好把列排名第一的第0個元素丟了出來,即count[1][0]。

            學生朋友應付考試的總結:
            1. 單個“*”或單個“[]”可以獲得地址;雙“*”或雙“[]”或一個“*”加上一個“[]”可以獲得數組值。這樣的規律是不是很簡潔明了?

             錯誤不足之處還請大家多多指正!謝謝!

            posted on 2009-01-05 02:25 掃地僧 閱讀(470) 評論(3)  編輯 收藏 引用 所屬分類: C++

            評論

            # re: 迷糊的多維數組的地址  回復  更多評論   

            int number[10][20][30];
            --------------------------
            typedef int ten_ints[10];
            typedef ten_ints twenty_ten_ints[20];
            typedef twenty_ten_ints thirty_twenty_ten_ints[30];
            thirty_twenty_ten_ints number;
            2009-01-06 01:24 | 陳梓瀚(vczh)

            # re: 迷糊的多維數組的地址  回復  更多評論   

            交個朋友吧,樓主是安豐的吧

            技術論壇:
            http://www.erpside.cn/forum-44-1.html
            http://www.erpside.cn/forum-29-1.html

            qq:676710849,你qq加起來費勁,加我的吧
            2009-01-11 03:50 | daocaoren

            # re: 迷糊的多維數組的地址  回復  更多評論   

            @daocaoren
            ok!
            2009-01-11 17:41 | 掃地僧
            久久93精品国产91久久综合| 无码AV中文字幕久久专区| 久久免费国产精品| 伊人久久成人成综合网222| 97久久国产综合精品女不卡| 久久亚洲精品国产精品| 久久99亚洲综合精品首页| 欧美噜噜久久久XXX| 久久影院午夜理论片无码| 人人狠狠综合久久88成人| 久久亚洲天堂| 久久国产精品久久| 久久精品亚洲AV久久久无码| 成人久久精品一区二区三区| 久久久久99精品成人片| 久久国产欧美日韩精品| 久久只有这里有精品4| 99久久国语露脸精品国产| 思思久久99热只有频精品66| 狠狠色婷婷久久一区二区三区| 亚洲国产成人精品无码久久久久久综合 | 久久精品人妻一区二区三区| 亚洲色欲久久久综合网东京热| 久久精品无码一区二区日韩AV| 99久久er这里只有精品18| 久久中文字幕人妻丝袜| 99久久亚洲综合精品成人| 97久久超碰成人精品网站| 少妇精品久久久一区二区三区| 亚洲乱码日产精品a级毛片久久 | 国产精品免费福利久久| 怡红院日本一道日本久久 | a高清免费毛片久久| 男女久久久国产一区二区三区| 久久久人妻精品无码一区| 精品国产婷婷久久久| 精品国产福利久久久| 成人妇女免费播放久久久| 久久久久亚洲AV无码网站| 久久久久人妻一区二区三区vr| 一本一本久久A久久综合精品|