Ⅰ C++中如何定義動態的字元串數組
new 動態定義數組。因並談為new 就是用來動態開辟空間的,所以當然可以用來開辟一個數組空間。
這樣,下面的語句:
int size=50;
int *p=new int[size]; 是正確的。
首先 new int[size][Column] 就是動態生成時確定的,所以它沒有錯。那麼就是 int(*p)[Column],這句有問題了,這句為什麼不對呢, 那是因為,這是一個定義語句,而定義語句先經過編譯器進行編譯,當編譯器運行到此處時,發現Column 不是常數,因此不能通過編譯。
而之所以編譯器認為Column 不是常數,是因為編譯階段,編譯器起的作用是查語法錯誤,和預分配空間,它並不執行程序,因此,沒有執行那亮畢個賦值語句(只是對這個語句檢查錯誤,和分配空間),因此編譯階段,它將認為column 是個變數。
動態數組的特點
數組到底應該有多大才合適,有時可能不得而知。所以希望能夠在運行時具有改變數組大小的能力。
動態數組就可以在任何時候改變大小。在Visual Basic中,動態數組最靈活、最方便,有助於有效管理內存。例如,可短時間使用一個大數組,然後,在不使用這敬蔽芹個數組時,將內存空間釋放給系統。
如果不用動態數組,就要聲明一個數組,它的大小盡可能達到最大,然後再抹去那些不必要的元素。但是,如果過度使用這種方法,會導致內存的操作環境變慢。
每次執行 ReDim 語句時,當前存儲在數組中的值都會全部丟失。Visual Basi 重新將數組元素的值置為 Empty(對 Variant 數組)、置為 0(對 Numeric 數組)、置為 零長度字元串(對 String 數組)或者置為 Nothing(對於對象的數組)。
在為新數據准備數組,或者要縮減數組大小以節省內存時,這樣做是非常有用的。有時希望改變數組大小又不丟失數組中的數據。使用具有 Preserve 關鍵字的 ReDim 語句就可做到這點。