回覆列表
  • 1 # 大寶8211

    不能使用 == 運算子與兩個陣列的名稱來確定陣列是否相等。以下程式碼似乎是在比較兩個陣列的內容,但實際上並不是。

    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,則說明沒有發現差異,陣列是相等的,然後就會顯示一條訊息指示該結論;否則,陣列不相等,又會顯示另外一條不同的訊息。

  • 中秋節和大豐收的關聯?
  • 南美白對蝦養殖應該如何肥水效果最好?