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

再談下聲明、定義、初始化、賦值和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 古月 閱讀(3766) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

導航

統計

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

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>
            国产欧美日韩综合| 亚洲人成啪啪网站| 久久久久国产精品厨房| 欧美一级理论片| 黄色一区二区在线| 欧美成人国产| 欧美激情综合五月色丁香小说 | 在线亚洲激情| aa日韩免费精品视频一| 国产精品一区二区三区久久久| 国产精品高清在线| 欧美一级淫片aaaaaaa视频| 亚洲欧美一区二区视频| 一区二区三区在线高清| 亚洲区一区二| 国产精品黄视频| 久久影视精品| 欧美日韩成人一区二区| 亚洲愉拍自拍另类高清精品| 羞羞视频在线观看欧美| 亚洲日本va午夜在线影院| 在线一区观看| 尤物网精品视频| 这里只有精品在线播放| 狠狠色丁香婷婷综合| 亚洲美女av在线播放| 国产午夜精品麻豆| 亚洲精品国产精品国自产观看浪潮| 久久福利毛片| 99国产一区二区三精品乱码| 亚洲综合999| 亚洲乱码国产乱码精品精| 欧美一级在线播放| 日韩视频在线观看国产| 久久国产精品久久精品国产| 国产精品99久久不卡二区| 久久久久久九九九九| 亚洲深夜av| 欧美国产精品日韩| 久久嫩草精品久久久精品一| 欧美三区在线视频| 亚洲国产欧美日韩另类综合| 国产一区二区欧美日韩| 亚洲视频在线观看视频| 亚洲美女淫视频| 久久精品国产99精品国产亚洲性色| 国产一本一道久久香蕉| 99国产精品久久| 91久久精品一区二区三区| 欧美在线黄色| 欧美一区二区视频97| 欧美午夜女人视频在线| 亚洲精品视频一区| 亚洲大片精品永久免费| 性久久久久久久久| 欧美一区二区三区四区在线观看 | 9i看片成人免费高清| 怡红院精品视频| 午夜亚洲性色福利视频| 午夜视黄欧洲亚洲| 欧美午夜视频在线| 一区二区三区蜜桃网| 亚洲视频每日更新| 欧美网站在线观看| 一本大道av伊人久久综合| 在线一区视频| 欧美日韩在线直播| 中文网丁香综合网| 亚洲欧美在线磁力| 国产日韩精品一区| 欧美主播一区二区三区| 蜜桃久久av一区| 亚洲国产高清一区| 欧美电影免费观看网站| 亚洲国产另类久久精品| 99国产精品99久久久久久| 欧美日韩精品不卡| 亚洲一区二区三区777| 久久狠狠婷婷| 伊人婷婷久久| 欧美精品亚洲精品| 99综合在线| 久久爱www久久做| 国内精品福利| 欧美二区在线看| 一区二区三区欧美日韩| 久久精品国产久精国产爱| 黄色精品在线看| 欧美成人久久| 亚洲伊人一本大道中文字幕| 久久久久www| 亚洲免费成人av电影| 国产精品美女在线观看| 久久精品一级爱片| 亚洲精品一区二| 久久精品国产99| 亚洲精品一二| 国产亚洲一区二区三区在线观看| 亚洲精选久久| 午夜视黄欧洲亚洲| 在线精品视频一区二区| 欧美日韩精品福利| 欧美在线观看视频一区二区| 亚洲国产日韩在线| 性久久久久久| 亚洲精品一区二区三| 国产亚洲精品v| 欧美了一区在线观看| 欧美一区二区黄色| 亚洲欧洲日韩女同| 久久综合一区二区| 午夜精品99久久免费| 亚洲激情中文1区| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲最新视频在线| 欧美大尺度在线观看| 性欧美1819性猛交| 亚洲精品久久嫩草网站秘色| 国产欧美精品日韩精品| 欧美精品七区| 久久亚洲综合色| 久久爱www久久做| 中文在线不卡视频| 日韩视频一区二区三区| 欧美xxx在线观看| 久久久久欧美| 欧美一级视频免费在线观看| 日韩视频在线免费| 亚洲国产精品成人| 怡红院精品视频在线观看极品| 久久亚洲综合| 久久久精品欧美丰满| 香蕉久久夜色| 亚洲综合成人婷婷小说| 亚洲天堂网在线观看| 99视频在线精品国自产拍免费观看| 一个色综合导航| 亚洲精品在线看| 亚洲国产高清自拍| 亚洲国产天堂网精品网站| 激情懂色av一区av二区av| 国产亚洲欧洲997久久综合| 国产伦精品一区二区三区四区免费| 亚洲欧美日韩精品综合在线观看| 久久精品国内一区二区三区| 欧美一区二区精品| 午夜精品国产更新| 先锋影院在线亚洲| 欧美伊人久久| 久久深夜福利免费观看| 久久综合网络一区二区| 欧美成人按摩| 亚洲日本视频| 一区二区三区欧美成人| 亚洲免费视频网站| 午夜日韩视频| 久久久噜噜噜久久狠狠50岁| 久久日韩精品| 欧美高清你懂得| 国产精品v日韩精品| 国产精品一二一区| 精品成人a区在线观看| 亚洲精品一二| 亚洲自拍偷拍福利| 久久美女艺术照精彩视频福利播放| 亚洲精品一区二区在线| 一本色道久久综合狠狠躁篇怎么玩| 国产日韩欧美不卡在线| 在线观看日产精品| 日韩一级二级三级| 性欧美超级视频| 久久午夜精品| 亚洲精品视频在线看| 亚洲一品av免费观看| 久久久7777| 欧美激情视频一区二区三区在线播放| 性欧美激情精品| 欧美成人a视频| 国产精品久久国产精麻豆99网站| 欧美91视频| 国产精品一级| 亚洲电影免费观看高清| 一区二区三区欧美在线| 久久久久国产精品厨房| 91久久久久| 久久成人久久爱| 欧美日韩亚洲不卡| 在线日本高清免费不卡| 亚洲天堂成人在线观看| 蜜桃av噜噜一区二区三区| 一个色综合av| 免费毛片一区二区三区久久久| 久久精品99国产精品日本 | 久久国产精品99久久久久久老狼 | 亚洲国产婷婷综合在线精品| 亚洲一区三区视频在线观看| 免费看亚洲片| 亚洲午夜精品久久| 欧美乱妇高清无乱码| 在线日韩视频|