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

再談下聲明、定義、初始化、賦值和extern

雖然定義也是聲明,但為了方便說明問題,下文中的聲明只是單純的聲明,定義就只是定義。

1.      聲明、定義、初始化和賦值四個術語有著本質的不同,雖然有時候看起來差不多甚至完全一樣,但如果不搞清楚很容易出現錯誤,或者錯了不知道怎么改。

 

2.     a: extern關鍵詞用來表明這是一個聲明:extern int I;變量i就是一個聲明。聲明前面一定要有一個關鍵字extern,沒有這個關鍵詞就不是一個聲明。

b: 沒有extern就是一個定義,比如int i=9;是一個定義,特別要注意的是int i;這也是一個定義。

c: 初始化就是在變量定義時給變量一個初值,所以初始化語句也一定是一個定義語句,但反過來就不對了,因為類似于:int i;就是定義,但沒有初始化。特別要注意的是:extern int i = 9;雖然有extern關鍵詞,但是因為初始化了,所以這也是一個定義,不是聲明。

d: 賦值語句就簡單了,賦值語句是給一個已經定義的變量(不管這個變量有沒有初始化)一個新值。特別要注意的是,要給賦值的變量必須已經定義過了,僅僅聲明是不行的。

 

3.       extern關鍵詞除了表明這是一個聲明以外,更重要的是表明:所聲明的變量的定義可能是在程序中其他文件里。如下代碼

    //file1.cpp

#include <iostream>
using namespace std;
extern int i;//這是一個聲明,告訴編譯器變量i的定義有可能是在其他源文件中,即使本文件中沒有i的定義,你也不要報錯。
void main()
{
    extern int i;//同樣是對i的聲明,作用與上面的聲明完全一樣,說明聲明可以存在多個,實際上這兩個聲明只要任意一個就可以了。但是兩個聲明語句如果一個都沒有,編譯器就會認為變量i沒有定義,會報錯。

    i=0;//賦值語句,給變量i一個新值,變量賦值前必須要已經定義了,如果不存在file2文件中的定義語句,雖然不會出現編譯錯誤,但是鏈接會有錯。
    cout<<i;
}

//file2.cpp

int i;//首先是一個定義,而且是一個沒有初始化的定義(不過實際上全局變量i被默認初始化為0),變量i被定義在file2源文件中

 

 

4.      一個程序中可能包括不只一個文件,所有文件中同一個變量(其實主要說的全局變量)必須總共只能定義一次,但是聲明可以有無數個。而且如果文件A中用到的變量的定義是在其他文件中,那么在文件A中用這個變量之前,一定要加上一句extern聲明語句,告訴編譯器我所用的這個變量有可能是在其他文件里

5.   extern int i=9;上面已經提到雖然有extern,但這也是一個定義,因為初始化了。類似于這種有extern也有初始化的語句,只能出現在全局作用域,如果出現在函數內部,這是錯誤的。

6.       (轉)有關編譯器的一個特點:現代編譯器一般都屬于按文件編譯,就是說編譯時多個源文件自己編譯自己的,互不影響,好像只有自己一個文件。只要每個文件編譯時沒有出現錯誤,那么就不會發生編譯時錯誤。但是沒有發生編譯錯誤,并不代表程序就沒有錯誤,因為還會發生鏈接錯誤。比如下面這兩個代碼

     //A.cpp
int i;//這是變量i的定義
 
void main()
{
}

//B.cpp
int i;//這也是變量i的定義
編譯時兩個文件A和B是相互不影響的,所以編譯時不會出現任何錯誤,但是這個程序是有問題的,因為全局變量i是被定義了兩次的,所以鏈接時就會報告類似于下面的錯誤:

B.obj : error LNK2005: "int i" (?i@@3HA) already defined in A.obj

Debug/A.exe : fatal error LNK1169: one or more multiply defined symbols found

另外上面也提到了,編譯時各個文件是相互不影響的,編譯器是不會認為在這個文件中沒有定義的變量其實很有可能人家是個全局變量,在其他文件中定義了,這就要報錯。解決方法就是用extern聲明一個變量,告訴編譯器人家這個變量不是沒有定義,只是在其他文件中定義了,你別報錯了。

 

posted on 2012-06-07 15:41 古月 閱讀(3752) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

<2014年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

C++/C

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产在线欧美日韩| 亚洲国产高清一区二区三区| 欧美成人首页| 欧美日韩国产精品一区| 国产精品亚洲а∨天堂免在线| 国产偷自视频区视频一区二区| 亚洲高清在线| 欧美专区福利在线| 亚洲人成网站999久久久综合| 午夜在线播放视频欧美| 欧美黄色网络| 亚洲国产成人不卡| 亚洲国产另类久久精品| 久久精品女人| 国产日韩视频| 欧美承认网站| 久久riav二区三区| 国产精品欧美一区二区三区奶水| 亚洲免费一在线| 亚洲视频免费| 国产精品久久久久久av福利软件 | 欧美成人免费网| 亚洲无限av看| 亚洲免费av片| 欧美区一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 久久深夜福利| 黄色精品网站| 久久免费视频网| 国产精品蜜臀在线观看| 欧美日韩精品久久久| 午夜亚洲性色福利视频| 欧美国产视频一区二区| 久久最新视频| 亚洲黄色在线看| 亚洲一区欧美| 黄色成人av在线| 国产精品99久久久久久白浆小说| 好男人免费精品视频| 99在线|亚洲一区二区| 欧美日韩日韩| 午夜在线一区| 欧美激情一区二区三区不卡| 99精品国产在热久久婷婷| 亚洲欧洲精品天堂一级| 欧美日韩a区| 蜜臀91精品一区二区三区| 麻豆91精品| 99热这里只有精品8| 一道本一区二区| 国产欧亚日韩视频| 免费高清在线视频一区·| 国产精品久久久久一区二区三区| 欧美国产欧美综合 | 激情久久久久久久| 亚洲成人在线视频播放| 欧美精品性视频| 免费观看成人www动漫视频| 国产精品色婷婷| 中日韩视频在线观看| 中文精品在线| 久久超碰97人人做人人爱| 日韩视频一区二区三区在线播放| 一区二区冒白浆视频| 99在线精品免费视频九九视| 久久在线免费观看| 蜜桃精品久久久久久久免费影院| 国产网站欧美日韩免费精品在线观看 | 欧美一二区视频| 亚洲人成在线观看| 午夜精品视频在线观看| 午夜久久福利| 国产欧美在线| 欧美综合77777色婷婷| 久久久久久久久蜜桃| 欧美日韩国产一级片| 亚洲人成人一区二区三区| 一本色道久久综合亚洲91| 欧美日韩国产一区二区三区地区| 亚洲精品免费在线播放| 亚洲视频第一页| 国产精品视频一区二区三区| 亚洲欧美在线播放| 在线性视频日韩欧美| 免费成人毛片| 亚洲精品乱码久久久久久蜜桃麻豆 | 一区二区91| 午夜性色一区二区三区免费视频| 国产精品爽爽ⅴa在线观看| 亚洲欧美第一页| 亚洲美女中出| 国产精品乱人伦中文| 欧美一级欧美一级在线播放| 男同欧美伦乱| 国产综合第一页| 免费欧美视频| 免费成人你懂的| 亚洲美女免费精品视频在线观看| 欧美日韩一区在线观看| 欧美一区二区三区在线视频 | 久久成人综合视频| 91久久在线观看| 国产日韩欧美精品一区| 欧美成人一区二区三区| 亚洲午夜av| 午夜一区在线| 亚洲高清三级视频| 国产精品视频一区二区高潮| 欧美成人高清视频| 午夜亚洲视频| 亚洲美女在线观看| 免费久久99精品国产自| 性伦欧美刺激片在线观看| 最新国产成人在线观看| 国产精品综合av一区二区国产馆| 亚洲影院污污.| 最新成人在线| 免费高清在线一区| 久久gogo国模裸体人体| 一区二区免费在线视频| 在线观看精品| 欧美乱人伦中文字幕在线| 欧美诱惑福利视频| 在线亚洲成人| 日韩西西人体444www| 亚洲高清一区二| 欧美69视频| 久久综合狠狠| 亚洲美女91| 亚洲国产福利在线| 激情成人综合| 极品少妇一区二区三区精品视频| 国产精品入口福利| 欧美三区在线| 久久精视频免费在线久久完整在线看 | 日韩视频一区二区三区在线播放| 黑人巨大精品欧美一区二区| 国产精品婷婷| 国产精品观看| 国产精品久久久久久久午夜| 欧美日韩一区在线| 国产精品久久久久久亚洲调教| 欧美日本一道本| 欧美日韩免费观看一区=区三区| 欧美成人一区二免费视频软件| 久久夜色精品亚洲噜噜国产mv| 欧美一区在线看| 久久精品三级| 免费观看在线综合| 欧美承认网站| 欧美日韩一区二区在线视频| 欧美色欧美亚洲高清在线视频| 亚洲色图自拍| 久久精品日韩欧美| 亚洲第一区中文99精品| 欧美日韩成人一区| 欧美调教vk| 国产精品入口夜色视频大尺度| 国产日韩精品一区二区三区在线| 国产性猛交xxxx免费看久久| 国产人成一区二区三区影院| 国语自产精品视频在线看8查询8| 狠狠色狠狠色综合人人| 亚洲韩国青草视频| 在线一区免费观看| 欧美有码在线视频| 亚洲无亚洲人成网站77777| 亚洲欧美日韩国产成人| 久久久九九九九| 欧美夫妇交换俱乐部在线观看| 亚洲国产精品久久人人爱蜜臀 | 欧美一区二区三区四区高清| 久久天堂av综合合色| 男女精品视频| 国产精品久久999| 在线观看日韩一区| 亚洲午夜av在线| 欧美不卡视频一区| 在线视频亚洲欧美| 免费不卡在线观看| 国产欧美日韩精品a在线观看| 亚洲高清免费在线| 久久av一区二区三区| 欧美激情一区| 午夜精品剧场| 欧美视频亚洲视频| 影音先锋一区| 欧美一级免费视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美一级视频免费在线观看| 免费亚洲电影在线| 国产日产高清欧美一区二区三区| 亚洲精品免费在线| 夜夜爽www精品| 麻豆av一区二区三区久久| 美日韩精品视频免费看| 一区二区欧美在线| 欧美激情免费在线| 尤妮丝一区二区裸体视频| 午夜精品视频在线观看|