指針與數組
指針是一種保存對內存位置的引用的數據類型(即指針變量存儲某個存儲數據的內存位置的地址)。數組是存儲元素集合的最常用的數據結構。大多數編程語言都提供了方法來輕鬆地聲明數組和訪問數組中的元素。
什麼是指針?
指針是一種數據類型,用於存儲存儲某些數據的內存位置的地址。換句話說,指針保存對內存位置的引用。訪問存儲在指針引用的內存位置中的數據稱為取消引用。當執行諸如遍歷樹/字符串、表查找等重複操作時,使用指針可以提高性能。這是因為取消引用和複製指針比實際複製和訪問指針所指向的數據便宜。空指針是不指向任何對象的指針。在Java中,訪問空指針將生成一個稱為NullPointerException的異常。
什麼是數組?
如圖1所示,是一段代碼,通常用於聲明並向數組賦值。圖2描述了數組在內存中的樣子。
int值[5];值[0]=100;值[1]=101;值[2]=102;值[3]=103;值[4]=104; |
圖1:聲明和分配數組值的代碼
100 | 101 | 102 | 103 | 104 |
索引:0 | 1 | 2 | 三 | 4 |
圖2:存儲在內存中的數組
上面的代碼定義了一個可以存儲5個整數的數組,並使用索引0到4訪問它們。數組中的每一個元素都被分配了一個重要的數組。一旦定義了數組,它的大小就固定了。因此,如果在編譯時不確定數組的大小,那麼就必須定義一個足夠大的數組來保證安全。但是,大多數情況下,我們實際使用的元素數量少於我們分配的數量。所以相當多的內存實際上被浪費了。另一方面,如果“足夠大的數組”實際上不夠大,程序就會崩潰。
指針和數組有什麼區別?