• <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
            數據加載中……

            迷糊的多維數組的地址

             

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

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

            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 | 掃地僧
            色偷偷888欧美精品久久久| 韩国无遮挡三级久久| 久久人人爽人人精品视频| 久久性生大片免费观看性| 日韩欧美亚洲综合久久| 久久精品人人做人人妻人人玩| 久久最近最新中文字幕大全 | 欧美激情精品久久久久| 中文字幕成人精品久久不卡| 狠狠色丁香久久婷婷综合图片 | 中文字幕无码久久久| 久久精品人人做人人爽97| 亚洲国产成人精品91久久久| 浪潮AV色综合久久天堂| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 国产欧美久久一区二区| 性做久久久久久久久| 久久精品一区二区| 久久精品国产清自在天天线| 东京热TOKYO综合久久精品 | 精品久久久久久久无码 | 99久久精品日本一区二区免费| 久久久人妻精品无码一区| 99久久成人国产精品免费| 中文精品久久久久人妻不卡| 无码国内精品久久人妻麻豆按摩| 久久99国产精品久久| 国产精品久久自在自线观看| 国产亚洲精品久久久久秋霞| 亚洲国产日韩欧美综合久久| 久久精品99无色码中文字幕| 国内精品久久久久国产盗摄| 色综合久久88色综合天天| 狠狠色婷婷综合天天久久丁香| 久久久久99精品成人片欧美| 国产精品无码久久久久久| 久久99精品久久久久子伦| 好久久免费视频高清| 国产成人香蕉久久久久| 久久久久国产一区二区| 国产精品内射久久久久欢欢|