• <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 閱讀(2146) 評論(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&指針》里有講過這種。  回復  更多評論
              

            综合久久给合久久狠狠狠97色| 久久国产热这里只有精品| 91精品国产91热久久久久福利 | 久久精品国产亚洲av麻豆色欲| 99久久精品免费看国产一区二区三区| 超级97碰碰碰碰久久久久最新| 奇米影视7777久久精品人人爽| 久久国产福利免费| 精品久久久久久久久免费影院| 亚洲国产成人乱码精品女人久久久不卡 | 99精品久久久久久久婷婷| 一级女性全黄久久生活片免费 | 欧美一区二区三区久久综| 久久精品成人免费看| 亚洲国产成人久久精品99 | 伊人久久大香线蕉综合影院首页| 无码任你躁久久久久久老妇App| 久久久久精品国产亚洲AV无码| 国产精品久久久久久| 一本一本久久a久久精品综合麻豆| 日日狠狠久久偷偷色综合免费 | 精品无码久久久久久国产| 中文成人久久久久影院免费观看 | 久久WWW免费人成一看片| 日产精品久久久久久久性色| 免费精品99久久国产综合精品| 久久精品人人做人人爽电影 | 少妇熟女久久综合网色欲| 久久久久亚洲AV无码麻豆| 国产精品免费久久| 国产国产成人精品久久| 精品久久久久久久久久中文字幕 | 久久天天躁夜夜躁狠狠| 成人久久久观看免费毛片| 亚洲国产成人久久精品99 | 久久只有这精品99| 久久精品国产只有精品66| 色综合久久久久久久久五月| 狠狠色婷婷久久一区二区| 久久亚洲欧美日本精品| 狠狠色婷婷久久综合频道日韩|