[心得] staic用法

看板NUU_CSIE作者 (青)時間14年前 (2009/10/12 07:18), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
資柿園掛了,好多筆記心得都沒地方放 只好借放這邊了,阿東你應該沒意見吧 ----------------------------------- 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

10/17 02:03, , 1F
好文...私心建議以電玩的角度多舉例
10/17 02:03, 1F

10/17 02:05, , 2F
像是第三個例子就很像卡丁車團隊競速的藍氣
10/17 02:05, 2F

10/17 21:56, , 3F
樓上好愛玩卡陰車喔...(戳戳)
10/17 21:56, 3F

10/18 01:13, , 4F
...很久沒玩了,沒動力了...
10/18 01:13, 4F
文章代碼(AID): #1AqcUyWV (NUU_CSIE)