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

再談下聲明、定義、初始化、賦值和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++

<2012年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

導航

統計

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

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>
            久久久久久**毛片大全| 久久影院亚洲| 在线日韩视频| 在线观看日韩av先锋影音电影院| 国产日韩欧美高清| 激情一区二区三区| 伊人久久大香线蕉av超碰演员| 在线精品视频在线观看高清| 亚洲国产一区二区三区a毛片| 亚洲另类一区二区| 亚洲欧美国产一区二区三区| 久久成人亚洲| 亚洲国产成人在线播放| 亚洲国产欧美国产综合一区| 亚洲免费电影在线观看| 亚洲激情国产精品| 欧美四级在线| 国产一区二区三区久久 | 久久福利一区| 老鸭窝毛片一区二区三区| 欧美大片免费观看| 最新中文字幕亚洲| 亚洲欧美日韩国产另类专区| 久久午夜视频| 国产精品国产三级国产普通话蜜臀| 国产欧美一区二区精品秋霞影院 | 欧美区高清在线| 国产精品久久午夜夜伦鲁鲁| 亚洲高清免费视频| 欧美影院视频| 亚洲精品在线二区| 久久久久九九视频| 国产嫩草影院久久久久| 亚洲精品影院| 麻豆成人在线| 欧美一级艳片视频免费观看| 欧美日韩精品综合在线| 伊人婷婷久久| 亚洲欧美日韩直播| 国产在线日韩| 亚洲欧洲免费视频| 久久精品人人做人人爽电影蜜月| 亚洲第一级黄色片| 欧美与黑人午夜性猛交久久久| 欧美日韩四区| 亚洲欧洲精品一区| 欧美成人综合网站| 久久久久久久性| 国语自产精品视频在线看抢先版结局 | 亚洲高清视频一区| 欧美专区在线观看一区| 国产精品激情| 亚洲一区二区综合| 亚洲毛片一区| 欧美日韩91| 91久久国产综合久久| 美女黄毛**国产精品啪啪| 欧美一区二区三区精品电影| 国产女主播一区二区三区| 亚洲自拍三区| 香蕉av777xxx色综合一区| 国产精品呻吟| 久久激情视频| 久久久国产精彩视频美女艺术照福利| 国产一区二区三区电影在线观看| 久久久99免费视频| 久久久久久久精| 亚洲国产日韩在线一区模特| 亚洲福利在线视频| 欧美日韩免费在线视频| 亚洲欧美色婷婷| 欧美一区二区| 亚洲精品激情| 亚洲最新在线视频| 国产精品扒开腿做爽爽爽软件| 一本色道久久综合亚洲精品不卡| 亚洲精品视频在线| 国产精品试看| 欧美刺激午夜性久久久久久久| 奶水喷射视频一区| 亚洲视频在线观看视频| 欧美一级片久久久久久久| 亚洲人www| 亚洲一区二区免费看| 今天的高清视频免费播放成人| 欧美激情网友自拍| 国产精品你懂的在线| 麻豆精品视频在线观看视频| 欧美人在线视频| 欧美制服丝袜| 欧美精品入口| 久久久久久久激情视频| 久久综合色88| 宅男噜噜噜66一区二区66| 欧美国产日韩一区二区在线观看| 亚洲午夜小视频| 久久久999国产| 一区二区电影免费观看| 欧美一二三视频| 一区二区三区欧美| 久久国产婷婷国产香蕉| 亚洲图片在线观看| 久久综合狠狠综合久久激情| 一区二区三区不卡视频在线观看 | 久久成人免费| 一区二区欧美视频| 久久亚洲高清| 久久成人国产精品| 欧美三级午夜理伦三级中文幕 | 亚洲自拍偷拍视频| 久久综合色综合88| 欧美在线观看视频一区二区三区 | 亚洲国产三级在线| 含羞草久久爱69一区| 亚洲一区二区三区精品在线| 亚洲美女在线视频| 久久综合国产精品| 久久久久久久久久久一区 | 免费成人小视频| 久久久精品一区| 国产精品人人做人人爽| 亚洲理论在线观看| 日韩午夜精品视频| 欧美激情亚洲国产| 亚洲国产欧美在线人成| 在线观看国产一区二区| 久久精品国产清自在天天线| 欧美一区二区福利在线| 欧美涩涩网站| 99精品欧美一区二区三区综合在线| 亚洲国产精品免费| 麻豆久久精品| 亚洲国产成人精品女人久久久| 亚洲成色777777在线观看影院| 久久狠狠一本精品综合网| 欧美在线黄色| 国产夜色精品一区二区av| 午夜一区二区三视频在线观看| 欧美亚洲系列| 国产一区二区三区不卡在线观看| 欧美一区二区视频免费观看| 久久精品99| 黄色一区三区| 久久性色av| 亚洲日本中文字幕| 亚洲深夜av| 国产欧美日韩| 久久久精品日韩欧美| 亚洲国产精品热久久| 亚洲欧美国产毛片在线| 久久精品国产亚洲精品 | 久久综合九色综合欧美狠狠| 欧美影院视频| 国产日韩综合一区二区性色av| 亚洲无亚洲人成网站77777| 亚洲一区综合| 国产亚洲精品自拍| 麻豆精品网站| 亚洲美女尤物影院| 亚洲欧美日本国产有色| 国产日韩亚洲| 久久综合中文字幕| 一本色道久久综合亚洲二区三区 | 欧美午夜在线视频| 欧美一级电影久久| 免费h精品视频在线播放| 亚洲精品久久久蜜桃| 欧美日韩一区二区精品| 亚洲欧美日韩精品久久亚洲区| 久久免费精品视频| 99国产精品久久久| 国产乱码精品1区2区3区| 久久综合一区| 亚洲深夜激情| 欧美第一黄色网| 亚洲一区欧美| 亚洲国产精品va在线观看黑人| 欧美视频在线免费| 久久九九国产精品| 99精品国产一区二区青青牛奶| 欧美在线视频一区| 亚洲精品一区二区网址| 国产精品视频一| 欧美成人亚洲成人| 欧美一级成年大片在线观看| 亚洲精品五月天| 久久综合伊人77777麻豆| 亚洲午夜久久久久久久久电影院| 国产一区二区三区免费观看| 欧美日韩小视频| 久久久免费观看视频| 亚洲午夜在线观看| 最新日韩在线视频| 欧美福利视频| 久久亚洲精品一区二区| 欧美一区二区观看视频| 一区二区激情视频| 久久精品综合网| 亚洲女人天堂av| aⅴ色国产欧美|