2015-01-16 113 views
-3

我想知道C#中靜態和動態之間的明顯區別。 我在不同的博客上看到很多帖子,但我不滿意他們的答案。數據結構中的靜態和動態有什麼區別

請說清楚。

+3

靜態還是動態是什麼?哪種語言?這是一個特定的編碼問題還是一般好奇心?就目前來看,你的問題是無法回答的。 – Tommy

+0

它的一般好奇心 –

回答

0

根據特定的上下文,這些術語有很多種用法。但一般來說,靜態指的是早期指定的東西,或硬編碼到程序中,並且不容易更改。 動態是指有意在飛行中更新的內容。

例如,在C,如果你喜歡聲明數組:

int arr[100]; 

數組的大小是靜態的:它總是100元。即使你使用宏,像這樣:

int arr[SIZE]; 

你將不得不更新宏定義並重新編譯程序來改變數組的大小。編譯器會留出固定的內存塊來保存數組;如果它是一個局部變量,它將在函數的堆棧幀中分配內存,如果它是一個全局變量,它將在程序啓動時在BSS段中分配(具體細節取決於實現,但這是典型的方式)。

在另一方面,如果使用:

int *arr = malloc(n * sizeof(int)); 

陣列的大小是動態的 - 這取決於變量n的當前值,其可以依賴於程序輸入和其它狀態。您也可以使用realloc()更改陣列的大小。

+0

如何在靜態和動態分配內存? –

相關問題