EasyC++內部鏈接性和無鏈接性
文章轉自微信公眾號:Coder梁(ID:Coder_LT)
1.內部鏈接性
當我們使用static關鍵字,將變量的作用于限制在整個文件時,該變量的鏈接性為內部鏈接性。在多文件的程序當中,內部鏈接性和外部鏈接性是有所差別的,內部鏈接性的變量只能在當前文件使用,而常規(guī)外部變量是可以跨文件使用的。
但這就帶來了一個問題,如果我們在兩個文件當中都定義了同一個全局變量,會發(fā)生什么呢?
// file1 int error = 20; // file2 int error = 5;
答案是:這樣的做法會報錯,因為它違反了單定義規(guī)則。
但是我們可以將其中一個變量通過static關鍵字變成靜態(tài)內部變量,那么在該文件當中,靜態(tài)變量將隱藏常規(guī)的外部變量:
// file1 int error = 20; // file2 static int error = 5;
這樣做的好處是,當我們確定我們某些變量的使用范圍只有當前文件的時候,我們可以使用static關鍵字來防止它和一些其他文件當中的外部變量相沖突。
2.無鏈接性
無鏈接性的變量我們在之前的文章當中也曾經提到過,其實就是在代碼塊當中使用static關鍵字創(chuàng)建的。
在代碼塊當中創(chuàng)建的靜態(tài)變量會和代碼塊的生命周期脫鉤,雖然它只能在代碼塊運行時使用,但它的結果會一直存在,并不會隨著代碼塊的執(zhí)行結束而消亡。
void test() {
static int ret = 0;
ret++;
cout << ret << endl;
}
int main() {
test();
test();
return 0;
}
這段代碼的運行之后將會得到1和2,因為ret是一個無鏈接性的靜態(tài)變量,它會一直存在。所以當test運行一次之后,它的結果會變成1,并被保存下來。
主要應用場景就是我們希望有些變量能夠隨著代碼塊的運行有所沉淀,記錄下中途的狀態(tài)或者是中間結果。有了靜態(tài)變量就可以不必使用全局變量了。
到此這篇關于EasyC++內部鏈接性和無鏈接性的文章就介紹到這了,更多相關C++內部鏈接性和無鏈接性內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言基本排序算法之插入排序與直接選擇排序實現(xiàn)方法
這篇文章主要介紹了C語言基本排序算法之插入排序與直接選擇排序實現(xiàn)方法,結合具體實例形式分析了插入排序與直接選擇排序的定義、使用方法及相關注意事項,需要的朋友可以參考下2017-09-09

