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

            技術(shù),是一種態(tài)度。關(guān)注:高性能后端技術(shù)/服務(wù)器架構(gòu)/C++/C/LAMP

               :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              20 Posts :: 0 Stories :: 93 Comments :: 0 Trackbacks

            公告





            twitter / xoXGuru

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

            常用鏈接

            留言簿(12)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

             

            大家對(duì)數(shù)組的使用再熟悉不過(guò)了吧?
            來(lái)看下這個(gè)程序,挺簡(jiǎn)單的。

            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}


            現(xiàn)在請(qǐng)仔細(xì)看第6行。
            發(fā)現(xiàn)了什么?
            試下編譯一下看能不能通過(guò)?


            把這個(gè)程序更加簡(jiǎn)化

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

             
            再來(lái)看下產(chǎn)生的匯編代碼
            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

            你沒(méi)有看錯(cuò),此刻這個(gè)數(shù)組春哥附體,a[1]的指向地址和1[a]是一樣的,都是[ebp-10h]。

            Why?

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

            是不是感到 啊哈!靈機(jī)一動(dòng)(aha! Insight)了呢?

            擴(kuò)展資料:《C陷阱與缺陷》p33~p38




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

            Feedback

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-24 12:21 t
            搞c++的都懂點(diǎn)數(shù)組/地址間的關(guān)系 所以應(yīng)該沒(méi)啥奇怪的

            真正奇怪的是, 這樣的寫(xiě)法是不是標(biāo)準(zhǔn)c++. 我覺(jué)得[]前的應(yīng)該是變量名字,而1應(yīng)該不符合變量命名(數(shù)字不能開(kāi)頭).  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-24 12:24 凡客成品
            路過(guò)踩踩!!  回復(fù)  更多評(píng)論
              

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

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-24 14:16 izualzhy
            學(xué)習(xí)了呵呵  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-24 16:43 guest
            是古老的C語(yǔ)法。。很少人用了。  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象”[未登錄](méi) 2009-12-24 19:25 cawboy
            新手,以前沒(méi)見(jiàn)過(guò)  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-24 22:15 cdy20
            偶贊!  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-24 22:38 Sunshine Alike
            我靈光一閃~~哈哈  回復(fù)  更多評(píng)論
              

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

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

            :)
              回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-25 16:07 凡客誠(chéng)品官方網(wǎng)站
            是古老的C語(yǔ)法。。  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-26 11:49 Geek.tan
            “此刻春哥附體了”--哈哈  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象”[未登錄](méi) 2009-12-28 18:00 欲三更
            加法滿(mǎn)足交換律  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-29 09:17 junglevass
            古老的c語(yǔ)法,別用了。。。。第一次見(jiàn)都會(huì)覺(jué)得奇怪。  回復(fù)  更多評(píng)論
              

            # re: C/C++數(shù)組的一個(gè)“怪現(xiàn)象” 2009-12-31 15:14 zsslxy2006
            在《C專(zhuān)家》或《C&指針》里有講過(guò)這種。  回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            欧美大香线蕉线伊人久久| 久久久国产精品亚洲一区| 久久人人爽人人爽人人片av高请| 伊人精品久久久久7777| 综合久久精品色| 伊人久久大香线蕉av一区| 亚洲国产小视频精品久久久三级| 欧美伊人久久大香线蕉综合| 欧美噜噜久久久XXX| 嫩草影院久久国产精品| 久久久久久A亚洲欧洲AV冫| 亚洲精品tv久久久久久久久| 99久久精品免费看国产一区二区三区 | 国产午夜精品久久久久九九电影 | 久久无码AV中文出轨人妻| 亚洲欧美成人综合久久久| 久久午夜电影网| 久久综合九色综合网站| 四虎国产精品成人免费久久| 久久久久久国产精品免费无码| 国产L精品国产亚洲区久久 | 性色欲网站人妻丰满中文久久不卡| 国产精品美女久久久久网| 久久免费视频1| 94久久国产乱子伦精品免费| 久久亚洲sm情趣捆绑调教| 久久99久久无码毛片一区二区| 久久精品人人槡人妻人人玩AV| 亚洲精品国产自在久久| 韩国三级中文字幕hd久久精品| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 女人高潮久久久叫人喷水| 99久久免费只有精品国产| 久久国产精品77777| 久久WWW免费人成一看片| 国产成人精品综合久久久久| 久久嫩草影院免费看夜色| 婷婷久久综合九色综合绿巨人| 91精品国产91久久久久久| 四虎国产永久免费久久| 亚洲综合久久综合激情久久|