extern知識點總結

2021-10-10 04:27:06 字數 3011 閱讀 2491

三、參考資料

總結主要記錄學習程式設計的經驗和個人知識點總結,僅供學習用途。

extern 可以置於變數或者函式前,以標識變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。

extern作用有兩個。

extern與「c」一起連用時,如:

extern

"c"void

fun(

int a,

int b)

;

意思為告訴編譯器,在編譯fun這個函式名時按照c函式規範去鏈結而不是c++,c++的規則在翻譯這個函式名時可能會把fun的名字變得面目全非,主要原因是c++和c程式編譯完成後再目標**中命名規則不同。

主要用在c++呼叫c庫函式時,需要在c++程式中用extern "c"宣告要引用的函式。

extern不與「c」一起連用修飾變數或函式時,如在標頭檔案中:

extern

int g_int;

extern為宣告函式或全域性變數的作用範圍的關鍵字,其宣告的函式和變數可以在本模組或其他模組中使用,它是乙個宣告而不是變數

變數前有extern不一定就是宣告;變數前無extern就只能是定義。

定義要為變數分配記憶體空間,程式中變數尤其只有乙個定義;而宣告不需要為變數分配記憶體空間,用於向程式表明變數的型別和名字

注意:1、定義也是宣告,當定義變數時我們宣告了它的型別和名字。

2、extern宣告不是定義:通過使用extern關鍵字宣告變數名而不定義它。

3、變數在使用前就要被定義或者宣告。

4、在乙個程式中,變數只能定義一次,卻可以宣告很多次。

5、定義分配儲存空間,而宣告不會。

對於變數來說:

extern

int a;

//宣告乙個全域性變數a

int a;

//定義乙個全域性變數a

extern

int a=0;

//定義乙個全域性變數a,並賦初值

int a=0;

//定義乙個全域性變數a,並賦初值

定義只能出現一次,不管是 int a; 還是extern int a=0 還是 int a=0 都只能出現一次。

而 extern int a 可以出現多次。

引用全域性變數的時候,必須要宣告: extern int a;

對於函式,也是有定義和宣告,定義的時候用extern,說明這個函式是可以被外部引用的,宣告的時候用extern說明這是乙個宣告

定義函式要有函式體,宣告函式沒有函式體

定義乙個全域性函式:

int

fun(

void

)

c/c++中extern關鍵字詳解

extern 與標頭檔案(*.h)的區別和聯絡

c語言中宣告和定義詳解

知識點總結

只能在標頭檔案做宣告。

extern 和 static不能同時修飾同乙個變數。

static修飾的全域性變數宣告與定義同時進行。

static修飾全域性變數的作用域只能是本身的編譯單元。它的「全域性」只對本編譯單元有效,其他編譯單元則看不到它。

一般定義 static 全域性變數時,把它放在原始檔中而不是標頭檔案。

標頭檔案作用:對使用者的說明,函式,引數,各種各樣的介面的說明。存放關於函式,變數,類的宣告(對於函式來說,也叫函式原型),是宣告,不是定義

不要把變數定義放入 .**件,容易導致重複定義錯誤。可以再標頭檔案宣告變數,用的時候包含這個標頭檔案就宣告了這個變數。

模板是.c檔案和.**件的結合,標頭檔案是對該模板介面的宣告。

某模板提供給其他模板呼叫的外部函式及資料需在.**件中冠以extern 關鍵字宣告。

10.模板內的函式和全域性變數需在.c檔案開頭冠以static關鍵字宣告。

變數和函式總結:

對於變數而言,如果要在本原始檔(例如檔名a)中使用另乙個原始檔(例如源檔名b)的變數,方法有兩種:

(1)在檔案a中必須用extern宣告在檔案b中定義的變數(當然是全域性變數);

(2)在檔案a中新增檔案b對應的標頭檔案,當然這個標頭檔案包含檔案b的變數宣告,也就是在這個標頭檔案中用extern宣告該變數,否則,該變數又被定義一次。

對於函式而言,如果要在本原始檔(例如檔名a)中使用另乙個原始檔(例如檔名b)的函式,方法有兩種:

(1)在檔案a中用extern宣告在檔案b中定義的函式(其實,也可省略extern,只需在檔案a**現檔案b定義函式原型即可);

(2)在檔案a中新增檔案b對應的標頭檔案,當然這個標頭檔案包含檔案b中的函式原型,在標頭檔案中函式可以不用加extern。

另一種說法:

(1)乙個檔案呼叫另乙個檔案的全域性變數,因為全域性變數一般定義在原始檔.c當中,我們不能用#include包含原始檔而只能包含標頭檔案,常用的方法為用extern int a來宣告外部變數。

另乙個方法為在a.c檔案中定義了全域性變數int global_num,可以在對應的a.h標頭檔案中寫extern int global_num,這樣其他原始檔可以通過 #include a.h 來宣告它是外部變數。

(2)變數與函式的不同舉例:

int

fun();

//函式宣告

extern

intfun()

;//也是函式宣告

函式定義要有實現體,用extern int fun()只是更明確指明是宣告而已。

int a;

//是定義

extern

int a;

//是宣告

知識點總結

1,迴圈中的中斷 continue 跳出此次迴圈,繼續for迴圈 break 跳出當前for迴圈 return 跳出當前方法 2,字串的操作 componentseparatedbystring stringbyreplacingoccurencesofstring withstring iskin...

知識點總結

oncreate onstrat onresume onpause onstop onrestart ondestroy standard 啟動activity都會產生乙個新的activity 預設模式 singletop 啟動activity允許多個,但不允許重疊 singletask 只允許有乙...

知識點總結

function go go 呼叫 go為變數名 setinterval go,1000 1000ms clearinterval 關閉定時器 function abc a,b 2,3 5undefined 未定義 null 空 nan 非數值 string 字串 var a 123 數字型別 va...