• <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>

            XGuru's Blog

            技術,是一種態度。關注:高性能后端技術/服務器架構/C++/C/LAMP

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              20 Posts :: 0 Stories :: 93 Comments :: 0 Trackbacks

            公告





            twitter / xoXGuru

            feedsky
            抓虾
            google reader
            鲜果
            QQ邮箱
            九点

            常用鏈接

            留言簿(12)

            搜索

            •  

            最新評論

            閱讀排行榜

             

            大家對數組的使用再熟悉不過了吧?
            來看下這個程序,挺簡單的。

            1#include<iostream>
            2int main()
            3{
            4    int a[] = {1,2,3,4,5};
            5    for(int i = 0 ; i < 5; i++)
            6        std::cout << i[a] << " ";
            7    return 0;
            8}


            現在請仔細看第6行。
            發現了什么?
            試下編譯一下看能不能通過?


            把這個程序更加簡化

            1int a[5= {1,2,3,4,5};
            2int b = 1[a];

             
            再來看下產生的匯編代碼
            4:       int a[5] = {1,2,3,4,5};
            00401568   mov         dword ptr [ebp-14h],1
            0040156F   mov         dword ptr [ebp-10h],2
            00401576   mov         dword ptr [ebp-0Ch],3
            0040157D   mov         dword ptr [ebp-8],4
            00401584   mov         dword ptr [ebp-4],5
            5:        int b = 1[a];
            0040158B   mov         eax,dword ptr [ebp-10h]
            0040158E   mov         dword ptr [ebp-18h],eax

            你沒有看錯,此刻這個數組春哥附體,a[1]的指向地址和1[a]是一樣的,都是[ebp-10h]。

            Why?

            我們回憶一下數組和指針的關系,如何用指針來表示數組?
            *a  就是 數組 a中下標為0的值的引用,即a[0],
            那么*(a+i) 呢?
            表示的就應該是數組 a中下標為i的值的引用了,即a[i],
            那么這種現象也不足為怪了:
            因為 *(a+i)  == *(i+a)
            所以 a[i] == i[a]

            是不是感到 啊哈!靈機一動(aha! Insight)了呢?

            擴展資料:《C陷阱與缺陷》p33~p38




            posted on 2009-12-24 00:55 XGuru 閱讀(2144) 評論(14)  編輯 收藏 引用

            Feedback

            # re: C/C++數組的一個“怪現象” 2009-12-24 12:21 t
            搞c++的都懂點數組/地址間的關系 所以應該沒啥奇怪的

            真正奇怪的是, 這樣的寫法是不是標準c++. 我覺得[]前的應該是變量名字,而1應該不符合變量命名(數字不能開頭).  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-24 12:24 凡客成品
            路過踩踩!!  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-24 13:12 Ted
            @t
            其實不難想象,你所奇怪的不是已經被自己一語道破了嗎~
            數組也是地址,因此實際上1[a]這樣的語句被編譯器理解為"取基址1加上偏移量a的內存塊的內容".  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-24 14:16 izualzhy
            學習了呵呵  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-24 16:43 guest
            是古老的C語法。。很少人用了。  回復  更多評論
              

            # re: C/C++數組的一個“怪現象”[未登錄] 2009-12-24 19:25 cawboy
            新手,以前沒見過  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-24 22:15 cdy20
            偶贊!  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-24 22:38 Sunshine Alike
            我靈光一閃~~哈哈  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-25 12:16 float
            都是地址相加,數組名是一個常量指針。
            LZ可以試下

            "abcdef"[0];
            這樣也是正確的

            :)
              回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-25 16:07 凡客誠品官方網站
            是古老的C語法。。  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-26 11:49 Geek.tan
            “此刻春哥附體了”--哈哈  回復  更多評論
              

            # re: C/C++數組的一個“怪現象”[未登錄] 2009-12-28 18:00 欲三更
            加法滿足交換律  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-29 09:17 junglevass
            古老的c語法,別用了。。。。第一次見都會覺得奇怪。  回復  更多評論
              

            # re: C/C++數組的一個“怪現象” 2009-12-31 15:14 zsslxy2006
            在《C專家》或《C&指針》里有講過這種。  回復  更多評論
              

            精品人妻伦九区久久AAA片69 | 久久这里只精品99re66| 精品人妻久久久久久888| 久久午夜夜伦鲁鲁片免费无码影视| 日本道色综合久久影院| 亚洲成色www久久网站夜月| 伊人久久大香线蕉精品不卡| 久久婷婷色综合一区二区| 精品欧美一区二区三区久久久| 天天爽天天爽天天片a久久网| 99国产欧美久久久精品蜜芽| 亚洲精品国精品久久99热一| 久久精品国产亚洲AV影院| 久久久久久久波多野结衣高潮| 亚洲精品无码久久久| 日韩AV毛片精品久久久| 亚洲国产香蕉人人爽成AV片久久| 国产精品99久久久久久www| 99久久国产综合精品网成人影院 | 久久精品国产只有精品2020| 久久久一本精品99久久精品66 | 国产精品99精品久久免费| 韩国免费A级毛片久久| 丰满少妇人妻久久久久久| 国产精品99久久99久久久| 久久精品免费观看| 久久婷婷色综合一区二区| 色妞色综合久久夜夜| 亚洲AV日韩AV天堂久久| 久久国产高清字幕中文| 婷婷久久综合九色综合98| 国产精品免费久久久久电影网| 久久五月精品中文字幕| 2021国内精品久久久久久影院| 亚洲精品高清国产一线久久| 久久A级毛片免费观看| 久久成人18免费网站| 久久精品国产亚洲AV影院| 四虎国产永久免费久久| 久久久久国产精品三级网| 伊人久久精品无码二区麻豆|