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

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

為了說明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 閱讀(757) 評論(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| 国产日韩欧美精品一区| 国产日韩欧美成人| 伊人蜜桃色噜噜激情综合| 91久久久在线| 亚洲影院免费| 久久综合国产精品| 亚洲高清免费| 久久综合五月| 日韩亚洲欧美一区| 亚洲免费在线视频| 久久av二区| 欧美成人午夜剧场免费观看| 欧美精品久久久久久久免费观看| 欧美日韩在线视频一区二区| 国产一区二区中文字幕免费看| 亚洲二区在线| 亚洲无毛电影| 久久综合久久88| 艳女tv在线观看国产一区| 亚洲欧美日韩久久精品| 久久亚洲图片| 国产美女诱惑一区二区| 亚洲三级免费| 久久久久女教师免费一区| 亚洲精品久久嫩草网站秘色| 欧美一区二区三区成人| 欧美日韩成人综合| 精品99一区二区三区| 欧美亚洲日本网站| 亚洲人成网站色ww在线| 久久精品一二三| 国产精品久久久久久久久久直播| 亚洲国产日韩欧美综合久久| 久久精品卡一| 亚洲免费在线| 国产精品hd| 亚洲视频久久| 亚洲精品国产拍免费91在线| 美女91精品| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲综合三区| 夜夜嗨av一区二区三区| 欧美福利在线| 欧美成人高清视频| 国产一区二区三区在线免费观看| 亚洲一区二区三区影院| 91久久中文字幕| 快she精品国产999| 激情六月婷婷久久| 久久精品国产99国产精品澳门 | 国产女人水真多18毛片18精品视频| 久久亚洲欧美| 欧美激情91| 亚洲经典一区| 欧美视频网站| 亚洲色图自拍| 欧美午夜久久| 久久精品视频在线观看| 国产精品免费小视频| 亚洲综合视频一区| 中文日韩在线视频| 国产精品乱码妇女bbbb| 亚洲一级在线| 亚洲影院在线观看| 国产日韩欧美中文| 久久婷婷国产综合国色天香| 久久精品国产96久久久香蕉| 红桃视频亚洲| 欧美激情精品久久久久久免费印度 | 一本一道久久综合狠狠老精东影业 | 夜夜嗨av一区二区三区网站四季av| 亚洲高清不卡一区| 欧美喷水视频| 亚洲欧美电影院| 午夜视频久久久久久| 在线观看中文字幕不卡| 亚洲第一狼人社区| 欧美视频成人| 欧美综合二区| 免费欧美日韩| 亚洲欧美综合一区| 久久精品国产成人| 日韩亚洲欧美综合| 亚洲一区二区三区涩| 精品51国产黑色丝袜高跟鞋| 亚洲国产精品一区| 国产精品视频一| 欧美电影免费| 国产精品欧美风情| 模特精品裸拍一区| 国产精品久久久久91| 欧美sm视频| 国产精品一级久久久| 欧美v国产在线一区二区三区| 免费亚洲电影| 国产精品swag| 美女爽到呻吟久久久久| 欧美日韩123| 久热精品视频在线免费观看| 欧美色区777第一页| 久久久久久一区二区| 欧美日韩在线直播| 欧美成人一区在线| 国产精品九九| 亚洲高清视频一区二区| 国产亚洲精品资源在线26u| 亚洲精品小视频| 亚洲国产成人tv| 欧美一级在线播放| 亚洲在线观看免费| 欧美精品一区在线观看| 美女成人午夜| 国产欧美一区二区三区视频| 亚洲乱码国产乱码精品精98午夜| 在线不卡欧美| 欧美一区二区视频97| 亚洲在线免费视频| 欧美女同在线视频| 亚洲精品久久久久中文字幕欢迎你| 激情丁香综合| 久久精品亚洲热| 久久精品一区四区| 国产美女搞久久| 亚洲一区二区影院| 亚洲免费视频一区二区| 欧美日韩国产片| 亚洲欧洲美洲综合色网| 亚洲国产综合在线| 久久夜色撩人精品| 美玉足脚交一区二区三区图片| 国产精品亚洲第一区在线暖暖韩国| 亚洲美女黄色片| 一区二区三区不卡视频在线观看| 欧美大片免费观看| 91久久精品美女高潮| 亚洲美女av在线播放| 欧美高清影院| 亚洲精选在线| 亚洲欧美日本视频在线观看| 国产精品日韩欧美一区二区| 午夜精品成人在线| 久久精品91久久香蕉加勒比| 国产日韩在线不卡| 久久久久国内| 欧美激情精品久久久久久久变态| 亚洲精品国产日韩| 欧美日韩国产成人| 中文精品一区二区三区| 性久久久久久久久久久久| 国产欧美日韩精品a在线观看| 欧美一级播放| 欧美福利电影网| 一区二区激情| 久久在线免费视频| 亚洲日本电影| 国产精品久久久久久久久久久久久久| 亚洲一区二区精品在线| 西西人体一区二区| 国产亚洲精品久久久久久| 久久久久久91香蕉国产| 亚洲福利一区| 午夜在线一区| 亚洲第一福利在线观看| 亚洲欧洲综合| 午夜精品www| 亚洲国产精品一区二区尤物区| 欧美日韩情趣电影| 性感少妇一区| 亚洲二区在线观看| 亚洲欧美日韩成人| 亚洲成色www久久网站| 欧美日韩美女一区二区| 亚洲欧美视频一区二区三区| 欧美96在线丨欧| 亚洲欧美999| 亚洲国产成人久久| 欧美性色aⅴ视频一区日韩精品| 性欧美xxxx视频在线观看| 欧美激情精品久久久久久变态| 亚洲欧美日韩在线综合| 亚洲三级毛片| 韩国久久久久| 欧美午夜一区二区福利视频| 老巨人导航500精品| 亚洲一区二区精品视频| 亚洲国产视频一区| 可以免费看不卡的av网站|