不能使用
==
運算子與兩個陣列的名稱來確定陣列是否相等。以下程式碼似乎是在比較兩個陣列的內容,但實際上並不是。
int arrayA[] = { 5, 10, 15, 20, 25 };
int arrayB[] = { 5, 10, 15, 20, 25 };
if (arrayA == arrayB) // 語句錯誤
cout << "The arrays are the same. n";
else
cout << "The arrays are not the same.n";
在對陣列名稱使用
==
運算子時,運算子會比較陣列的開始記憶體地址,而不是陣列的內容。這個程式碼中的兩個陣列顯然會有不同的記憶體地址。因此,表示式 arrayA == arrayB 的結果為 false,程式碼將報告陣列不相同。
要比較兩個陣列的內容,則必須比較它們各自的元素。例如,請看以下程式碼:
const int SIZE = 5;
int arrayA[SIZE] = { 5, 10, 15, 20, 25 };
int arrayB[SIZE] = { 5, 10, 15, 20, 25 };
bool arraysEqual = true; // 標誌變數
int count = 0; //迴圈控制變數
//確定元素是否包含相同的資料
while (arraysEqual && count < SIZE)
{
if (arrayA[count] != arrayB[count])
arraysEqual = false;
count++;
}
//顯示合適的訊息
if (arraysEqual)
cout << "The arrays are equal.n";
else
cout << "The arrays are not equal.n";
此程式碼確定 arrayA 和 arrayB 是否包含相同的值。初始化為 true 的 bool 變數 arraysEqual 將表示陣列是否相等。另一個初始化為 0 的變數 count 被用作迴圈計數器。
接下來開始一個 while 迴圈。只要 arraysEqual 為 true 並且計數器變數 count 小於 SIZE,迴圈就會執行。在每次疊代中,它會比較陣列中不同的對應元素。如果它找到兩個具有不同值的相應元素,那麼 arraysEqual 變數將設定為 false,這將允許退出迴圈而不檢查更多值。
迴圈完成後,if 語句將測試 arraysEqual 變數。如果變數仍然為 true,則說明沒有發現差異,陣列是相等的,然後就會顯示一條訊息指示該結論;否則,陣列不相等,又會顯示另外一條不同的訊息。