static、extern的用法與區別
面試被問到了,我稍微總結記錄一下。
主要是static和extern全域性變數的區別
1.extern可以使變數在不同檔案共享;
static限制了變數的作用域,只能在本檔案使用。
extern和static不能同時修飾一個變數
2.extern是宣告變數,最好是在標頭檔案中做宣告;
static是定義變數,一般定義static全域性變數時,都把它放在原cpp檔案中而不是標頭檔案。
3.全域性函式宣告預設是extern。
4.函式或變數可以宣告多次,但定義只能有一次。
5.如果使用extern在標頭檔案中定義變數,包含此標頭檔案的多個檔案編譯連線時,會出現該變數被定義多次,因而出錯;
如果使用static在標頭檔案中定義變數,包含此標頭檔案的多個檔案編譯連線時,不會出現重定義錯誤,每個編譯單元都會有一個獨立的屬於該變數的儲存空間,但由此會對其他編譯單元造成不必要的資訊汙染。
相關推薦
js中slice、splice用法與區別
delet 內容 title pan ont 指定 至少 一個 拷貝 1.slice(start,end)(參數可選) slice() 方法返回一個從開始到結束(不包括結束)選擇的數組的一部分淺拷貝到一個新數組對象。原始數組不會被修改。 var a = [‘a‘, ‘b‘
px、em、rem、rpx 用法 與 區別
這篇文章記錄前端(包含小程式)開發中常用到的幾個單位 px、em、rem、rpx 的區別和用法。 px px畫素(Pixel)。相對長度單位。畫素px是相對於顯示器螢幕解析度而言的。 PX特點 1. IE無法調整那些使用px作為單位的字型大小; 2.
static、extern的用法與區別
面試被問到了,我稍微總結記錄一下。 主要是static和extern全域性變數的區別 1.extern可以使變數在不同檔案共享; static限制了變數的作用域,只能在本檔案使用。 extern和static不能同時修飾一個變數 2.extern是宣告變數
extern 與 static的用法與區別
1.extern的用法: extern可以宣告其他檔案內定義的變數。 在一個程式裡,一個物件只能定義一次, 它可以有多個宣告,但型別必須完全一樣。 如果定義在全域性作用域或者名字空間作用域 裡某一個變數沒有初始化,它會被按照預設方式初始化。 將變數或函式宣告成外部連結,即
淺談JS中的!=、== 、!==、===的用法和區別 JS中Null與Undefined的區別 讀取XML文件 獲取路徑的方式 C#中Cookie,Session,Application的用法與區別? c#反射 抽象工廠
main 收集 data- 時間設置 oba ase pdo 簡單工廠模式 1.0 var num = 1; var str = ‘1‘; var test = 1; test == num //true 相同類型 相同值 te
ARM指令集--ldr、mov與str的用法與區別
ARM指令集–ldr、mov與str的用法與區別 ARM 是 RISC 結構,因此只能使用精簡指令。 1. mov的用法 在ARM體系中,mov只能用於資料在暫存器之間的移動或者往暫存器中寫入立即數。格式如下:mov{條件}{s} 目的暫存器,源運算元
final,static的用法與區別
一、final 根據程式上下文環境,Java關鍵字final有“這是無法改變的”或者“終態的”含義,它可以修飾非抽象類、非抽象類成員方法和變數。你可能出於兩種理解而需要阻止改變:設計或效率。 final類不能被繼承,沒有子類,final類中的方法預設是final的。 fin
linux中strcpy、memcpy的用法與區別
strcpy提供了字串的複製,以 \0 為結束標誌(即一旦遇到資料值為0的記憶體地址,拷貝過程即結束)。 函式原型如下: char *strcpy(char *dest, const char *src); 其在核心(lib\string.h)原始碼的實現如下: char
鍵盤事件keypress 和 keydown、keyup 的用法與區別
KeyDown:使用者摁下摁鍵時發生 KeyPress:使用者摁下摁鍵,並且產生一個字元時發生 KeyUp: 使用者釋放某一個摁鍵時觸發 定義和用法 完整的 keypress 過程分為兩個部分:1. 按鍵被按下;2. 按鍵被鬆開。 當按鈕
刪除表資料drop、truncate和delete的用法與區別
說到刪除表資料的關鍵字,大家記得最多的可能就是delete了 然而我們做資料庫開發,讀取資料庫資料.對另外的兩兄弟用得就比較少了 現在來介紹另外兩個兄弟,都是刪除表資料的,其實也是很容易理解的 老大------drop 出沒場合:drop table tb --tb表示資料表的名字,下同 絕招:刪除內容和
Spring中@Resource與@Autowired、@Qualifier的用法與區別
-h 進行 如果 註解 tool j2e vat 裝配 light 1、@Autowired與@Resource都可以用來裝配bean. 都可以寫在字段上,或寫在setter方法上。 2、@Autowired默認按類型裝配(這個註解是屬業spring的),默認情況下必須要求
SQL查詢中in、exists、not in、not exists的用法與區別
1、in和exists in是把外表和內表作hash(字典集合)連線,而exists是對外表作迴圈,每次迴圈再對內表進行查詢。一直以來認為exists比in效率高的說法是不準確的,如果查詢的兩個表大小相當,那麼用in和exists差別不大;如果兩個表中一個較小一
淺談mmap()和ioremap()的用法與區別
12只 設備 gpa 我們 之間 mmap ioremap shared set 一、mmap()mmap()函數是用來將設備內存線性地址映射到用戶地址空間。(1)首先映射基地址,再通過偏移地址尋址;(2)unsigned char *map_cru_base=(unsig
oracle 之 偽列 rownum 和 rowid的用法與區別
lena select 區別 name 繼續 class 重復 clas 重復數據 rownum的用法 select rownum,empno,ename,job from emp where rownum<6 可以得到小於6的值數據 select rownum,e
static和extern的使用區別
col color 不可訪問 全局 結束 改變 初始 font spa 1. static: 局部:只會初始化一次,內存只有一份內存;改變不了局部變量的作用域但可延長其生命周期至程序結束才被銷毀。 全局:僅限於當前文件的作用域,外部
【轉】typedef和#define的用法與區別
++ 說明 運算符 lan body 精度 標識 gpo 幫助 typedef和#define的用法與區別 一、typedef的用法 在C/C++語言中,typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配內存空間,實例像:
margin和padding的用法與區別--以及bug處理方式
使用 滿足 左右 ron 相互 一段 布局 方式 ont margin和padding的用法: (1)padding (margin) -left:10px; 左內 (外) 邊距(2)padding (margin) -right:10px;
nginx的location配置root、alias用法和區別
必須 del 實例 解釋 一個 clas 指定 不同的 否則 root & alias區別root與alias主要區別在於nginx如何解釋location後面的uri,這會使兩者分別以不同的方式將請求映射到服務器文件上root的處理結果是:root路徑+loca
淺談@RequestMapping @ResponseBody 和 @RequestBody 註解的用法與區別
ber attribute thrown text 返回結果 mode 需要 oca 格式 1.@RequestMapping 國際慣例先介紹什麽是@RequestMapping,@RequestMapping 是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,
for in,Object.keys()與for of的用法與區別
輸出結果 例子 iter iterator style 內容 通過 結果 array Array.prototype.sayLength=function(){ console.log(this.length); } let arr = [‘a‘