C++ 陣列



C++ 陣列儲存相同型別元素的固定大小的順序集合。陣列用於儲存資料集合,但通常將陣列視為相同型別變數的集合更有用。

與其宣告單個變數,例如 number0、number1、... 和 number99,不如宣告一個數組變數,例如 numbers,並使用 numbers[0]、numbers[1] 和 ...、numbers[99] 來表示單個變數。陣列中的特定元素透過索引訪問。

所有陣列都由連續的記憶體位置組成。最低地址對應於第一個元素,最高地址對應於最後一個元素。

宣告陣列

要在 C++ 中宣告陣列,程式設計師需要指定元素的型別以及陣列所需的元素數量,如下所示:

type arrayName [ arraySize ];

這稱為一維陣列。arraySize 必須是大於零的整數常量,type 可以是任何有效的C++ 資料型別。例如,要宣告一個名為 balance 的 10 個元素的 double 型別陣列,可以使用以下語句:

double balance[10];

初始化陣列

您可以逐個初始化 C++ 陣列元素,也可以使用單個語句,如下所示:

double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};

花括號 { } 中的值數量不能大於我們在方括號 [ ] 中為陣列宣告的元素數量。以下是一個分配陣列單個元素的示例:

如果省略陣列的大小,則會建立一個足夠容納初始化的陣列。因此,如果您編寫:

double balance[] = {1000.0, 2.0, 3.4, 17.0, 50.0};

您將建立與上一個示例中完全相同的陣列。

balance[4] = 50.0;

以上語句將陣列中第 5 個元素的值設定為 50.0。索引為 4 的陣列將是第 5 個,即最後一個元素,因為所有陣列的第一個元素的索引都為 0,也稱為基索引。以下是我們上面討論的相同陣列的圖形表示:

Array Presentation

訪問陣列元素

透過索引陣列名稱來訪問元素。這是透過在陣列名稱後方方括號中放置元素的索引來完成的。例如:

double salary = balance[9];

以上語句將從陣列中獲取第 10 個元素並將值賦給 salary 變數。以下是一個示例,它將使用上面提到的所有三個概念,即宣告、賦值和訪問陣列:

示例

在以下示例中,我們宣告一個數組,為陣列分配值,然後訪問陣列元素:

#include <iostream>
using namespace std;
 
#include <iomanip>
using std::setw;
 
int main () {

   int n[ 10 ]; // n is an array of 10 integers
 
   // initialize elements of array n to 0          
   for ( int i = 0; i < 10; i++ ) {
      n[ i ] = i + 100; // set element at location i to i + 100
   }
   cout << "Element" << setw( 13 ) << "Value" << endl;
 
   // output each array element's value                      
   for ( int j = 0; j < 10; j++ ) {
      cout << setw( 7 )<< j << setw( 13 ) << n[ j ] << endl;
   }
 
   return 0;
}

此程式使用setw()函式來格式化輸出。當以上程式碼編譯並執行時,會產生以下結果:

輸出

Element        Value
      0          100
      1          101
      2          102
      3          103
      4          104
      5          105
      6          106
      7          107
      8          108
      9          109

獲取陣列長度

要獲取陣列的長度,您可以使用sizeof()運算子,方法是將陣列的大小除以陣列元素的大小。

考慮以下語法:

length = sizeof(arr) / sizeof(arr[0]);

示例

在以下示例中,我們定義一個數組並查詢它的長度:

#include <iostream>
using namespace std;

int main() {
  int arr[] = {10, 20, 30, 40, 50};
  int arr_length = sizeof(arr) / sizeof(arr[0]);

  cout << "Array's Length : " << arr_length;

  return 0;
}

輸出

Array's Length : 5

更改陣列元素

您可以透過指定索引並分配新值來更改陣列元素的值。

示例

在以下示例中,我們更改索引 2 處的值:

#include <iostream>
using namespace std;

int main() {
  int arr[] = {10, 20, 30, 40, 50};

  cout << "Before changing, element at index 2: " << arr[2] << endl;

  // changing the value
  arr[2] = 108;

  cout << "After changing, element at index 2: " << arr[2] << endl;

  return 0;
}

輸出

Before changing, element at index 2: 30
After changing, element at index 2: 108

更多關於 C++ 陣列

陣列對於 C++ 來說非常重要,需要更多詳細的資訊。以下是一些 C++ 程式設計師應該瞭解的重要概念:

序號 概念和描述
1 多維陣列

C++ 支援多維陣列。多維陣列最簡單的形式是二維陣列。

2 指向陣列的指標

您可以透過簡單地指定陣列名稱(不帶任何索引)來生成指向陣列第一個元素的指標。

3 將陣列傳遞給函式

您可以透過指定陣列的名稱(不帶索引)將指向陣列的指標傳遞給函式。

4 從函式返回陣列

C++ 允許函式返回陣列。

廣告