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

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

為了說明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 閱讀(752) 評論(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>
            欧美日韩高清免费| 免费av成人在线| 久久国产精品免费一区| 亚洲精选久久| 一区二区三区回区在观看免费视频| 在线免费日韩片| 最新亚洲视频| 亚洲一区在线视频| 久久精品国产免费观看| 欧美ed2k| av不卡在线观看| 久久国产一二区| 欧美黄污视频| 国产精品久久久久永久免费观看| 欧美本精品男人aⅴ天堂| 亚洲专区一区| 久久av一区| 欧美—级a级欧美特级ar全黄| 欧美日韩成人网| 国产一区亚洲| 日韩视频在线观看免费| 亚洲欧美一区二区视频| 久久综合久久综合九色| 日韩视频在线观看| 久久精品水蜜桃av综合天堂| 欧美日韩视频在线观看一区二区三区| 国产精品一区二区你懂得| 亚洲国产精品国自产拍av秋霞| 亚洲一区二区三区三| 欧美激情1区2区3区| 欧美一区二区三区婷婷月色| 欧美国产精品劲爆| 激情一区二区三区| 午夜久久一区| 亚洲毛片网站| 免费观看久久久4p| 国产欧美亚洲精品| 亚洲婷婷综合色高清在线| 欧美.www| 久久精品理论片| 国产九九精品| 亚洲色图自拍| 亚洲欧洲精品一区二区三区 | 亚洲永久网站| 亚洲国产毛片完整版 | 欧美专区第一页| 国产精品女主播在线观看| 亚洲乱码国产乱码精品精98午夜| 久久精品国产综合| 亚洲在线一区二区| 欧美亚男人的天堂| 亚洲尤物在线视频观看| 亚洲免费精彩视频| 欧美日韩在线精品| 亚洲一区久久久| 一区二区三欧美| 欧美日韩1234| 亚洲视频一区二区| 99国产精品国产精品毛片| 欧美激情视频在线播放| 亚洲三级免费| 亚洲精品一区二区三区樱花| 久久一区二区三区av| 亚洲第一搞黄网站| 欧美多人爱爱视频网站| 欧美r片在线| 亚洲精品中文字幕在线观看| 亚洲精品免费一区二区三区| 亚洲一区免费| 亚洲国产成人不卡| 久久蜜桃精品| 在线看视频不卡| 欧美激情一区二区在线| 欧美成人综合| 亚洲网站视频| 亚洲桃花岛网站| 海角社区69精品视频| 久久视频国产精品免费视频在线| 欧美在线在线| 亚洲肉体裸体xxxx137| 亚洲人成毛片在线播放女女| 欧美日韩国产限制| 久久国产精品72免费观看| 久久久精品免费视频| 亚洲美女毛片| 午夜精品久久久久久久久久久久久| 狠狠久久五月精品中文字幕| 欧美激情一二三区| 欧美视频免费看| 久久亚洲欧洲| 欧美特黄a级高清免费大片a级| 性色av一区二区三区红粉影视| 亚洲男人的天堂在线aⅴ视频| 好吊色欧美一区二区三区四区 | 久久久久久久久岛国免费| 亚洲精品在线免费观看视频| 一区二区三区视频观看| 国模大胆一区二区三区| 日韩一级网站| 亚洲黄色成人网| 亚洲香蕉视频| 亚洲区一区二区三区| 亚洲一区二区在线免费观看| …久久精品99久久香蕉国产| av成人免费在线观看| 亚洲高清在线播放| 亚洲欧美国产精品专区久久| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲一区二区三区免费观看| 亚洲国产另类久久精品| 欧美一区二区三区另类| 亚洲一区二区三区四区中文| 狂野欧美一区| 久久中文在线| 国产日韩1区| 中文国产亚洲喷潮| 亚洲精品在线视频| 免费日韩一区二区| 美日韩丰满少妇在线观看| 国产九区一区在线| 亚洲午夜激情免费视频| 日韩视频久久| 欧美jizz19性欧美| 欧美国产视频在线观看| 国产亚洲精品久久久久动| 亚洲性线免费观看视频成熟| 一区二区免费在线观看| 欧美丰满高潮xxxx喷水动漫| 欧美激情视频一区二区三区在线播放| 亚洲少妇诱惑| 欧美一区二区免费| 亚洲一区二三| 欧美日韩极品在线观看一区| 91久久精品一区二区别| 亚洲欧洲日韩女同| 欧美成人蜜桃| 亚洲人成在线观看网站高清| 亚洲免费播放| 欧美区一区二| 夜夜嗨一区二区| 亚洲免费在线视频一区 二区| 欧美午夜视频在线| av成人免费在线观看| 午夜国产精品影院在线观看 | 亚洲一区二区三区在线视频| 欧美精品三级在线观看| 亚洲激情小视频| 一区二区三区 在线观看视| 欧美日韩视频不卡| 一本色道久久88综合日韩精品| 亚洲手机在线| 国产精品你懂的在线欣赏| 性做久久久久久久久| 久久综合色天天久久综合图片| 欧美一区二区黄色| 欧美一区二区性| 红杏aⅴ成人免费视频| 久久蜜桃资源一区二区老牛| 亚洲国产精品精华液2区45| 99国产精品久久久久久久久久 | 国产一区二区三区黄视频| 欧美一区二区三区视频免费播放 | 亚洲综合国产| 国产亚洲欧美一区二区| 久久婷婷国产综合精品青草| 亚洲第一精品夜夜躁人人躁| 亚洲美女网站| 国产欧美精品日韩精品| 久久一区二区三区四区| 99视频一区| 久久久久久久一区二区三区| 亚洲精品一区二| 国产欧美日韩另类视频免费观看| 久久久国产午夜精品| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲欧美日韩精品在线| 国精品一区二区| 欧美日韩在线一区二区| 久久久久亚洲综合| 一区二区欧美视频| 亚洲大胆女人| 久久精品亚洲热| 99精品热视频只有精品10| 国产婷婷一区二区| 欧美日韩爆操| 久久这里只有| 欧美亚洲日本国产| 一本在线高清不卡dvd| 免费视频亚洲| 久久成人精品视频| 亚洲图片在线| 亚洲精品视频免费| 韩日在线一区| 国产精品一区二区视频| 欧美国产日韩精品免费观看| 亚洲国产日日夜夜| 久久疯狂做爰流白浆xx| 在线视频成人| 国产一区二区三区四区五区美女| 欧美日韩三级在线|