發表文章

目前顯示的是有「陣列與指標」標籤的文章

陣列 (C++)

圖片
C++ Arrays  陣列 (array) 是用來儲存相同資料型態元素的集合,陣列中所有元素會使用記憶體中連續的空間來儲存,且陣列必須明確定義其大小,執行期間不能更改。  一維陣列 (One Dimensional Arrays) 一維陣列可視為一組線性系列元素。假設有一組整數資料:10 、20、30 、40 以及 50 存入一名為 A 的陣列,其對應的索引值、位址以及元素名稱如圖一所示。在此,每一整數佔記憶體空間為 4 個位元組 (Bytes),且 C/C++ 語言中陣列的起始索引值為 0。此ㄧ維陣列元素 A[0] 的位址,被稱為 基底位址 (base address)。 圖一     儲存有 10 、20、30 以及 40 四個整數的 一維陣列 圖二     陣列 A 與其元素的位址,一個整數資料型態的元素佔記憶體空間 4 位組 如圖二所示,元素 A[0] 的位址若是 23565450,因為儲存ㄧ個整數會佔記憶體空間 4 個位元組 (Bytes),因此元素 A[1] 的位址就會是 23565454,其餘元素的位址依此類推。亦即元素  A[ i ] 的位址 = A[ 0 ] 的位址 + i $\times $ sizeof(int) 其中的 i 是陣列的索引值須為正整數,其值起始於 0 至 sizeof (A) /  sizeof(int) - 1。利用  sizeof ( ) 運算子可找出陣列或各種資料型態,佔記憶體多少個位元組。例如 sizeof (A) 即可用來找出整個陣列 A 佔記憶體多少個位元組, sizeof(int) 則 用來找出一個整數資料型態數值佔記憶體多少個位元組。因此,sizeof (A) /  sizeof(int) 或  sizeof (A) /  sizeof(A[0])  就可找出陣列 A 的元素個數為何。事實上,陣列名稱 A,就是一個 指標 (pointer),也就是 常數 指標 A 本身儲存著陣列在記憶體中的起始位址 ( 等同於 &A[0] ),而索引值 i  $\times $ sizeof(int)  的值就是元素位置在記憶體中的 偏移量 (offset) 。因此...