2011New C 深入剖析靜態變數 面試題

2021-04-22 14:55:45 字數 974 閱讀 1831

using system;

using system.collections.generic;

using system.text;

答案是;

1,11,2

2,21,3

2,33,3

為什麼 自己 去琢磨吧

經過n個月的探索,終於研究明白了,現在詳細分析一下:

首先我們要從堆疊入手:靜態變數每一次進行例項化時候都不再進行重新分配空間,而動態變數卻每一次例項化時候另外開闢乙個新的空間,原來的空間依然保留,直到gc將它在記憶體中刪除。

我們來對上例進行分析:

首先 count   為靜態的,number為動態的

當第一次實行            staticclass a = new staticclass(); 進行例項化,執行建構函式後

count, number的記憶體如下圖:

當第二次進行例項化時候,由於count為靜態變數,所以在此例項化後執行建構函式後其count值在原來基礎上+1變成為2,原來的1所占用的記憶體消除。而動態變數並不消除原來記憶體,而是另外開闢乙個新的為新例項化後的b.number。此時b.number經過建構函式後為2。 而此時第一次構造後的a.number值依然保留 為1如下圖:

第三次例項化也是如此,對第一,第二次例項化的number值進行保留,而對count消除原來值,在原來記憶體上賦予新值。如下圖。

當呼叫a.show時,就去找a.count,a.number ,

b.show 時,就去找b.count,b.number

深入理解PHP原理之靜態變數

通常意義上靜態變數是靜態分配的,他們的生命週期和程式的生命週期一樣,只有在程式退出時才結束期生命週期,這和區域性變數相反。靜態變數的型別可以分為靜態全域性變數 靜態區域性變 靜態成員變數,最常見的是靜態區域性變數及靜態成員變數,先看看如下區域性變數的使用 function t t t t 上述的程式...

深入解析 c 中定義同名的靜態變數

最近通過幫朋友解答c 的一道筆試題,學到了不少東西,在此記錄下。題目如下 看到這道題,大部分人都能意識到這道題考的是 static 關鍵字的相關知識,static 關鍵字定義的變數只會初始化一次,並且值會在作用域內共享。到此大部分分人直接選d選項就接啥這道題了。但是細心的人可能會問,呼叫三次fun ...

面試6 11 const和靜態變數那些事兒

6 看看const和指標的那些事兒 const在int 左邊 const在int 右邊 const在int 兩邊 請看 注釋 1 1 include 2 3int main 4view code 7 說明const與 define的特點與區別 1 分別看看const和 define 1 define...