看板 NUU_CSIE 關於我們 聯絡資訊
資柿園掛了,好多筆記心得都沒地方放 只好借放這邊了,阿東你應該沒意見吧 ----------------------------------- static 有三種類型的用法 一種是用在函數裡面的靜態變數 一種是用在不同檔案之間靜態變數 一種是用在class或struct中靜態成員 以下,一一講解每種不同的使用方法: 使用在函數中 void Func() { static int count = 0; cout <<count++ <<endl; return; } 這是最常見的用法 一般區域變數,會在函數結束之後,便隨著消失 也就是說,每次呼叫Func這個函數(在沒有static的情況下) 每次秀出畫面的值都會是0 加上了static,表示他是靜態變數,會在程式一開始就獨立分配一塊記憶體 並不會被歸類於函數裡面的區域變數,因此不會隨著函數結束而消失 使用在不同檔案 當寫到稍微大一點的程式,就是專案 就會寫到很多個檔案,彼此之間有互相利用的關係存在 但是,有些變數並不想被外界使用的話,就必須使用到static static在這邊的意義,代表不被外界檔案所引用 一般情況下,我們要引用其他檔案的變數,必須使用extern 但是一旦加了static之後,extern也會變得無法使用 因此達到了不給外界使用的效果 class或struct之靜態成員 靜態成員的意義,很類似於第一種用法,不過仍然具有差異 相同的地方,在於他們都是額外的分配一塊記憶體區間 class或struct宣告出一個物件時,會分配一塊記憶體出來 而這塊記憶體包涵了物件中所有被宣告的變數 但是有個變數被宣告成static的話,就代表那個變數並不會隨著物件一起產生 而是獨立出來 也就是說,所有物件都不會包涵那個static宣告的變數 而是由class或struct有擁有,變成所有物件去共用一個變數而已 並非每一個物件獨立擁有該變數記憶體區間 以上,下次有機會再見。 (資柿園的怨念.....) -- ˍˍ 極目冷眼笑蒼雲 ▕寂寞▏ 寂寞一生傲天穹 ▕侯印▏  ̄ ̄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.4.13
osanaosana:好文...私心建議以電玩的角度多舉例 10/17 02:03
osanaosana:像是第三個例子就很像卡丁車團隊競速的藍氣 10/17 02:05
godman362:樓上好愛玩卡陰車喔...(戳戳) 10/17 21:56
osanaosana:...很久沒玩了,沒動力了... 10/18 01:13