日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

[C++再学习系列] 变量的声明、定义与extern关键字

發(fā)布時間:2025/4/5 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [C++再学习系列] 变量的声明、定义与extern关键字 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

變量的聲明與定義:

????? A definition of a variable allocates storage for thevariable and may also specify an initial value for the variable. There must be one and only one definition of a variable in aprogram.

????? A declaration makes known the type and name of the variableto the program. A definition is also a declaration:When we define a variable, we declare its name and type. We can declare a name without defining it by using theextern keyword. A declaration that is not also a definition consists ofthe object's name and its type preceded by the keyword extern.

?

????? 函數(shù)的定義與聲明很好區(qū)分,因為函數(shù)必須有函數(shù)體,編譯器才給它分配空間。而變量僅需一個名字和類型,編譯器即可分配空間給它。

????? 聲明只是告訴編譯器某個變量和函數(shù)是存在的,但并沒有真正分配空間。所以當(dāng)后面的代碼用到前面聲明的變量或函數(shù)時,編譯時不會報錯,而鏈接時會報錯。因為鏈接時編譯器將尋找這些變量和函數(shù)的內(nèi)存地址,如只聲明未定義,鏈接器是找不到內(nèi)存地址的,將報錯。總之,定義將分配空間,所以定義只能有一次(多次定義則編譯錯誤)。而聲明不分配空間,故可聲明多次。

?extern關(guān)鍵字

????? extern可置于變量或者函數(shù)前,以標(biāo)示變量或者函數(shù)的定義存在于其他文件中,提示編譯器遇到此變量和函數(shù)時到其他模塊(obj文件或庫文件)尋找其定義。另外,extern也可用來進(jìn)行鏈接指定。

????? 并非所有的變量都能用extern聲明,只有全局變量并且沒有被static聲明的變量才能聲明為extern。如果不想自己源文件中全局的變量被其他文件引用,加上static聲明即可。

?

示例:

聲明且定義:

intfudgeFactor;

std::stringhello("Hello, world!");

void foo() {/*… */}

?

聲明:

extern intfudgeFactor;

extern stringhello;

voidfoo();???????? // "extern" isoptional with function declarations

?

注意:使用extern關(guān)鍵字,要確保其聲明的變量和函數(shù)一定要在某個cpp文件中定義。不要直接在h文件中定義,這樣多次include后將產(chǎn)生多處定義。

參考:http://blog.csdn.net/zhenjing/archive/2009/07/11/4340306.aspx

?

總結(jié)

以上是生活随笔為你收集整理的[C++再学习系列] 变量的声明、定义与extern关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。