青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養德,非澹薄無以明志,非寧靜無以致遠。
隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
數據加載中……

兩個變量,一個地址

偶然在CSDN的論壇上看到這樣的題目,代碼如下:
 const int a=3;
    int *p=(int*)&a; 
    *p=100; 
    printf("*p =%d,a = %d\n",*p,a);
printf("p = %p,a = %p\n",p,&a);
程序中p和a的地址一樣,可值不一樣,容易讓人產生錯覺。有人說這樣做改變了常量a的值,調試跟蹤中發現a的值是100,可輸出的卻是3;還有人認為是常量折疊的緣故。其實這兩種說法都是錯誤的,沒抓住問題的本質。在這個程序中,通過int *p=(int*)&a;這個語句,常量a和指針p的地址是一樣的,但是由于它們所屬的內存區的不同,在棧區我們看到*p值是100,常量區的值是3.
在C++中,常量確實不分配內存,但是當對常量取地址時就已經分配了空間,常量是不可以改變的,但我們要記住的是:常量和常量的地址是兩個概念,常量不可以改變,但是常量的地址可以改變,所以說,改變了常量a的值,說法是不正確的;至于在調試中,發現a的值是100(VC編譯器的調試模式下的觀察窗口下,用鼠標點到a的地址處),可輸出的是3,那是因為,常量a和變量p是一個地址,但是卻分屬不同的內存區域,a是常量區,p是棧區,我們觀察的地址在棧中,所以看到的值是100(其實是存儲在指針p指向的地址中的值100),可輸出a的值3,a的值并沒變;這里和常量折疊的關系不大,至少不是它的實質,如果把const去掉值就一樣了。
值得注意是:這樣的代碼容易讓人產生錯覺,如果再有內存分配的話,很容易出問題,并不提倡這樣的代碼。一直一來認為,C++很大,注重的是細節,這里再次驗證了這一點。

posted on 2009-01-11 00:40 Benjamin 閱讀(856) 評論(3)  編輯 收藏 引用 所屬分類: C/C++

評論

# re: 兩個變量,一個地址  回復  更多評論   

是因為被優化了
2009-01-11 01:21 | 陳梓瀚(vczh)

# re: 兩個變量,一個地址  回復  更多評論   

調試跟蹤一下
2009-01-11 10:31 | Herb

# re: 兩個變量,一個地址  回復  更多評論   

我對一樓說的補充下,其實很簡單,對于const對象,編譯器是會做優化的,像內建類型的數據,比如int,float這些,編譯器會直接優化成立即數,舉個例子,現在有這么一條語句:
const int const_value = 1113;
int value = const_value;
vc的匯編窗口中對應的匯編代碼是這樣的:
004113AE mov dword ptr [const_value],9
004113B5 mov dword ptr [value],9
可以看出來,雖然優化了,但是,優化的并不是const_value本身,const_value依然是分配了內存的,真正被優化的是對const_value的取值操作,可以從004113B5這條語句看出來,對const_value的取值被直接化成了一個立即數。
所以這篇文章中的問題我們能清楚的解釋了,原因是:
對于const的語言內建類型數據,其取值操作會被優化成立即數訪問,而涉及到內存讀寫的操作,則和其他的變量操作是一樣的。
2009-01-11 16:47 | dophi
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲电影免费观看高清完整版在线观看 | 老司机午夜精品| 亚洲伊人网站| 亚洲图色在线| 一本久久a久久精品亚洲| 一本不卡影院| 亚洲欧美乱综合| 久久精品国产免费观看| 久久婷婷蜜乳一本欲蜜臀| 美国成人直播| 欧美日韩91| 国产精品久久久久久久久久久久久 | 一本到高清视频免费精品| 一本到12不卡视频在线dvd| 亚洲在线观看免费视频| 久久精品亚洲乱码伦伦中文| 玖玖玖国产精品| 欧美视频精品一区| 狠狠久久亚洲欧美专区| 99国产精品一区| 欧美一区观看| 欧美电影资源| 在线亚洲欧美| 噜噜噜久久亚洲精品国产品小说| 欧美日韩另类丝袜其他| 国产亚洲精品7777| 91久久精品国产| 欧美在线观看一区| 最新日韩欧美| 在线视频欧美日韩精品| 久久久综合视频| 国产精品人人爽人人做我的可爱 | 亚洲欧美日韩在线观看a三区 | 美女性感视频久久久| 9久re热视频在线精品| 久久精视频免费在线久久完整在线看| 欧美高清免费| 狠狠色狠狠色综合日日五| 亚洲午夜精品17c| 欧美激情按摩在线| 欧美在线观看视频在线| 欧美视频在线观看| 亚洲人成在线观看| 久久久久网址| 亚洲一区二区成人在线观看| 久久人人97超碰国产公开结果| 国产主播一区二区三区| 亚洲私人影吧| 亚洲激情偷拍| 久久综合伊人| 国产在线精品自拍| 久久精品国产96久久久香蕉 | 欧美在线你懂的| 国产精品久久久久久妇女6080| 亚洲精品乱码视频| 亚洲福利在线看| 另类综合日韩欧美亚洲| 国内精品久久久久久 | 国产精品二区影院| 日韩一级精品| 亚洲精选一区| 欧美日韩天堂| 亚洲欧美日韩视频一区| 一区二区高清在线| 国产精品三级久久久久久电影| 亚洲欧美日本另类| 亚洲欧美另类久久久精品2019| 国产日韩欧美一区二区| 久久精品欧洲| 久久久久五月天| 亚洲国产一区二区在线| 亚洲高清在线精品| 欧美精品一区二区三区视频| 99精品国产高清一区二区 | 欧美不卡高清| 亚洲日本国产| 亚洲卡通欧美制服中文| 国产精品国产三级国产aⅴ浪潮| 亚洲欧美日韩精品在线| 欧美在线视频网站| 亚洲国产精品久久久久秋霞蜜臀| 欧美激情久久久久| 欧美日韩在线综合| 久久国产精品99国产精| 久热综合在线亚洲精品| 99国产精品久久久久久久| 亚洲影视在线播放| 1024成人网色www| 亚洲精品午夜| 国产一区久久| 亚洲精品免费看| 国产亚洲aⅴaaaaaa毛片| 欧美国产日韩在线| 国产精品久久久一区二区三区 | 亚洲三级免费观看| 亚洲午夜精品国产| 一区免费观看| 一区二区三区日韩精品视频| 国产一区二区三区丝袜| 亚洲欧洲视频| 国产在线视频欧美| 黄色日韩在线| 久久久久国产精品www| 免费亚洲电影在线| 欧美一二三区精品| 欧美成黄导航| 久久久国产成人精品| 欧美日韩dvd在线观看| 久久综合成人精品亚洲另类欧美| 欧美人与性动交cc0o| 久久综合网hezyo| 欧美性感一类影片在线播放| 久久人人爽人人爽爽久久| 欧美日韩国产美女| 欧美国产视频在线| 激情91久久| 亚洲欧美日本另类| 中文一区在线| 欧美国产视频在线| 免费黄网站欧美| 国产日韩欧美一二三区| 一区二区av| 亚洲一区二区三区在线| 欧美电影免费观看高清| 欧美va亚洲va国产综合| 国产一区二区三区网站| 亚洲一区二区三区欧美| 中文在线资源观看视频网站免费不卡| 久久久噜噜噜久久中文字幕色伊伊| 亚洲欧美亚洲| 国产精品三区www17con| 亚洲婷婷综合色高清在线| av成人免费观看| 欧美精品成人一区二区在线观看 | 欧美激情bt| 在线视频成人| 美日韩精品免费观看视频| 美女脱光内衣内裤视频久久网站| 国产一区二区三区成人欧美日韩在线观看 | 久久九九久精品国产免费直播| 欧美一区二区网站| 国产亚洲欧美日韩一区二区| 欧美一级成年大片在线观看| 久久精品国产亚洲a| 国产亚洲欧美一区二区| 香蕉精品999视频一区二区| 欧美在线播放一区二区| 国产欧美在线观看| 欧美亚洲一区二区在线观看| 久久久久成人精品免费播放动漫| 国内精品模特av私拍在线观看| 欧美主播一区二区三区| 久久女同精品一区二区| 亚洲成人在线视频播放| 欧美顶级艳妇交换群宴| 日韩亚洲视频在线| 欧美尤物巨大精品爽| 国产在线观看91精品一区| 久久午夜视频| 亚洲国产综合视频在线观看| 一区二区三区久久久| 美女日韩欧美| 日韩视频专区| 亚洲永久精品大片| 国产精品网站在线观看| 欧美亚洲网站| 欧美电影免费观看网站| 亚洲一区在线播放| 国产综合欧美| 欧美成人免费全部| 亚洲一区精彩视频| 欧美成人精品一区二区三区| 99爱精品视频| 国产日本欧美一区二区| 老司机精品福利视频| 亚洲丝袜av一区| 免费视频一区| 午夜视黄欧洲亚洲| 亚洲精品美女91| 国产亚洲精品久久久久婷婷瑜伽| 久久综合久久综合这里只有精品| 正在播放亚洲| 亚洲电影欧美电影有声小说| 亚洲综合成人在线| 亚洲激情影院| 国产精品亚洲精品| 欧美黑人一区二区三区| 欧美一区二区在线看| 9久re热视频在线精品| 欧美大片免费观看| 欧美在线日韩| 夜夜嗨av色一区二区不卡| 国产一区二区三区高清| 欧美视频1区| 欧美激情一区在线| 久久久久五月天| 欧美资源在线| 亚洲一区激情| 一区二区三区欧美亚洲| 最新国产精品拍自在线播放|