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

聲明順序,靜態作用域,動態作用域

為了說明c++的聲明順序所導致的作用域問題,考慮如下代碼
 1 #include<iostream>
 2 //#include <map>
 3 //#include <string>
 4 using namespace std;
 5 
 6 int a;
 7 void first()
 8 {
 9     a = 1;
10 }
11 
12 void second()
13 {
14     int a = 7;
15     first();
16     cout << "second:" << a << endl;
17 }
18 
19 
20 int main()
21 {
22     a = 2;
23     int num;
24     cin >> num;
25     if (num > 0)
26     {
27         second();
28     }
29     else
30     {
31         first();
32     }
33     cout << a << endl;
34     return 0;
35 }
36 
猜想一下上面的代碼輸出的結果是什么?main函數中輸出的結果是1。不論你輸入的num值是正數還是負數結果都是1。為什么會這樣呢?這是因為c++采用的是靜態作用域規則。第9行代碼是關鍵所在。對于c++這種靜態語言而言,第9行代碼實際修改的是全局變量a的值。所以該程序的最終結果會是1。那么動態作用域規則的語言會輸出什么樣的結果呢?那就要根據所輸入的num來決定了。

c++聲明變量的作用就是引進名字符號,表明該變量的作用域,而定義則是給變量分配內存,并且綁定值的過程。對于調用子函數的過程,為了找到子函數中的變量的聲明作用域,編譯器采用了靜態鏈接的方法。對于程序的執行流程,編譯器會維護一個棧,棧中會存儲與相應調用函數對應的幀。編譯器通過棧和幀數據結構來維護程序執行所調用的函數層次流程。要找到一個子函數中的變量聲明域實際上就是在棧中相應幀中尋找該變量的聲明。尋找起點是當前活動幀,而當前活動幀又通過靜態鏈接(相當于指針)與它的父幀相關聯。但是考慮上面的程序,當輸入num大于0時,應該是先調用second,然后調用first,而second中對變量a重新進行了聲明,如果棧中維護的層次是函數調用的層次,則此時first中修改的變量a應該是second中聲明的變量a才是,那么結果輸出應該是2,但是事實并非如此。所以我認為棧中的靜態鏈接所鏈接的不是函數調用的層次,而是聲明的層次。考慮上面的程序,全局變量a和函數first的聲明是在同一層次的,則如果要尋找a中變量的聲明,應該首先查找a所在的那個模塊所對應的幀(姑且認為是全局幀吧,看成有一個全局范圍的函數與之對應),則這時找到的a的聲明應該就是全局變量a。所以如果按照這種分析的話,那么程序的結果就是1了。

以上只是我的猜想,由于最近要忙于考試,沒有時間查閱更多資料,且編譯原理那塊已經幾乎忘得差不多了。如有錯誤請各位指正。


posted on 2011-06-18 17:37 MrRightLeft 閱讀(762) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

<2011年6月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

導航

統計

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲人成在线观看网站高清| 亚洲精品免费一二三区| 亚洲欧美日韩一区在线观看| 99亚洲精品| 国产精品入口66mio| 亚洲欧美日本国产专区一区| 亚洲女人天堂av| 国产亚洲成av人在线观看导航| 久久精品男女| 免费亚洲一区二区| 一本大道久久a久久精品综合| 亚洲精品一区二区三区婷婷月 | 这里只有精品丝袜| 国产精品毛片a∨一区二区三区|国 | 欧美怡红院视频| 亚洲国产99| 日韩亚洲欧美成人| 国产精品日韩专区| 毛片av中文字幕一区二区| 免费永久网站黄欧美| 亚洲视频二区| 久久成人免费电影| 亚洲精品中文字| 亚洲一区在线播放| 在线不卡欧美| 一本大道久久精品懂色aⅴ| 国产视频久久久久久久| 欧美激情片在线观看| 国产精品二区三区四区| 久久久激情视频| 欧美日韩 国产精品| 久久精品国产久精国产思思| 欧美顶级大胆免费视频| 性感少妇一区| 欧美高清不卡| 久久久久久久999精品视频| 欧美日产一区二区三区在线观看| 欧美一区二区三区在线视频| 欧美国产另类| 猛男gaygay欧美视频| 欧美午夜女人视频在线| 免费在线观看成人av| 国产精品一区久久| 亚洲国产婷婷综合在线精品| 国产热re99久久6国产精品| 亚洲日本成人| 在线观看日韩国产| 小黄鸭精品aⅴ导航网站入口| 99亚洲视频| 欧美成人精品一区| 蜜桃精品一区二区三区| 国产精品视频免费观看www| 亚洲区一区二| 亚洲区在线播放| 久久不射2019中文字幕| 欧美一级专区| 国产精品久久999| 亚洲精品欧美| 99国产精品| 欧美成人有码| 亚洲观看高清完整版在线观看| 黄色亚洲精品| 久久精品国产亚洲a| 欧美一区观看| 国产免费成人在线视频| 亚洲视频二区| 亚洲欧美日韩区| 国产精品美女在线观看| 一区二区三区日韩欧美精品| av72成人在线| 欧美日韩视频在线一区二区观看视频| 欧美激情视频网站| 亚洲毛片在线免费观看| 欧美精品aa| 亚洲美女精品一区| 亚洲无限乱码一二三四麻| 欧美日韩激情小视频| 亚洲精品专区| 亚洲女人天堂成人av在线| 国产精品久久久久久久久久妞妞| 亚洲桃色在线一区| 欧美中文字幕视频| 黄色一区二区在线| 久久女同互慰一区二区三区| 欧美国产日韩一二三区| 亚洲乱亚洲高清| 欧美日韩一区不卡| 一区二区三区四区五区精品视频| 亚洲男人第一网站| 国产综合在线看| 免费短视频成人日韩| 99re6热只有精品免费观看| 亚洲永久免费| 好男人免费精品视频| 另类国产ts人妖高潮视频| 91久久在线| 欧美一级在线亚洲天堂| 在线视频成人| 欧美亚日韩国产aⅴ精品中极品| 午夜电影亚洲| 亚洲观看高清完整版在线观看| 亚洲主播在线观看| 亚洲一区久久久| 久久国产精品久久久| 六月婷婷一区| 亚洲欧洲视频| 性感少妇一区| 亚洲麻豆一区| 国产欧美日韩综合| 欧美精品成人| 久久精品青青大伊人av| 日韩小视频在线观看专区| 久久www免费人成看片高清| 亚洲高清免费在线| 国产女精品视频网站免费| 嫩草影视亚洲| 先锋影音一区二区三区| 亚洲经典在线| 免费人成网站在线观看欧美高清| 亚洲视频综合在线| 亚洲高清久久| 国产亚洲欧美在线| 欧美体内谢she精2性欧美| 久久综合影视| 久久动漫亚洲| 午夜久久久久| 在线视频你懂得一区二区三区| 欧美电影免费观看高清| 欧美中日韩免费视频| 亚洲——在线| 一本色道久久综合精品竹菊| 在线观看亚洲精品| 国产日韩欧美一区在线 | 久久久久久久尹人综合网亚洲| 日韩一二三在线视频播| 亚洲福利视频网站| 免费人成网站在线观看欧美高清| 欧美在线精品免播放器视频| 亚洲一区二区三区高清不卡| 一本综合久久| 在线视频欧美日韩| 这里只有精品视频| 一区二区成人精品| 妖精视频成人观看www| 亚洲欧洲日本专区| 亚洲欧洲中文日韩久久av乱码| 在线观看亚洲视频啊啊啊啊| 伊人久久大香线蕉av超碰演员| 国产日产欧美a一级在线| 国产麻豆精品在线观看| 国产欧美日韩一区二区三区在线观看 | 麻豆精品视频在线观看| 久久久国产午夜精品| 久久男人av资源网站| 久久久久久久久久久久久女国产乱| 欧美亚洲免费在线| 久久成人一区| 欧美aa国产视频| 欧美日韩国产专区| 国产精品www色诱视频| 国产乱人伦精品一区二区| 国产精品自拍网站| 国内精品视频在线播放| 在线免费高清一区二区三区| 亚洲激情成人网| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品久久久久9999吃药| 国产精品嫩草影院av蜜臀| 国产性天天综合网| 亚洲日产国产精品| 亚洲视频狠狠| 久久狠狠亚洲综合| 欧美成人一区二免费视频软件| 亚洲国产三级| 亚洲欧美激情在线视频| 久久精品五月婷婷| 欧美日韩a区| 国产欧美日本| 亚洲精品资源美女情侣酒店| 午夜国产一区| 亚洲国产高清高潮精品美女| 一区二区三区欧美| 久久久久这里只有精品| 欧美日韩一区二区在线观看| 国产综合色在线视频区| 99精品视频免费观看| 久久www免费人成看片高清| 亚洲黑丝在线| 久久精品青青大伊人av| 欧美天堂亚洲电影院在线播放| 国产亚洲一级| 国产精品99久久久久久久女警| 久久亚洲欧美| 亚洲视频免费| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲第一中文字幕| 亚洲欧美综合v| 欧美日韩在线播放三区四区| 在线不卡亚洲| 久久久久高清|