C++ 數組遍歷的兩種方式


C++ 數組遍歷的兩種方式:

  

#include <iostream>

using namespace std;

int main()
{
    // 一維數組
    int fibonacci[5] = {1, 1, 2, 3, 5};

    // 使用索引遍歷
    // 求數組長度:sizeof(array)/sizeof(array[0])
    cout << "Traverse By Index: ";
    for (int i = 0; i < sizeof(fibonacci)/sizeof(fibonacci[0]); i++)
    {
        cout << fibonacci[i] << " ";
    }
    cout << endl;

    // 使用指針遍歷
    // 取數組的(第一個元素)地址:int* p = array
    // 求數組最后一個元素的地址:&array[sizeof(array)/sizeof(array[0])-1]
    cout << "Traverse By Pointer: ";
    for (int* p = fibonacci; p <= &fibonacci[sizeof(fibonacci)/sizeof(fibonacci[0])-1]; p++) 
    {
        cout << *p << " ";
    }
    cout << endl;

    // 二維數組
    int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

    // 使用索引遍歷
    // 求一維數組長度:sizeof(array)/sizeof(array[0])
    // 求二維數組長度:sizeof(array[0])/sizeof(array[0][0])
    cout << "Traverse By Index: " << endl;
    for (int i = 0; i < sizeof(matrix)/sizeof(matrix[0]); ++i)
    {
        if (!i == 0)
        {
            cout << "| ";
        }
        for (int j = 0; j < sizeof(matrix[0])/sizeof(matrix[0][0]); ++j) 
        {
            cout << matrix[i][j] << " ";
        }
    }
    cout << endl;

    // 使用指針遍歷
    // 求二維數組首元素地址:int* p = &(matrix[0][0])
    // 求二維數組尾元素地址:&matrix[sizeof(matrix)/sizeof(matrix[0])-1][sizeof(matrix[0])/sizeof(matrix[0][0])]
    int count = 0;
    cout << "Traverse By Pointer: " << endl;
    for (int* p = &(matrix[0][0]); p < &matrix[sizeof(matrix)/sizeof(matrix[0])-1][sizeof(matrix[0])/sizeof(matrix[0][0])]; ++p)
    {
        if (count == (sizeof(matrix[0])/sizeof(matrix[0][0])))
        {
            cout << "| ";
            count = 0;
        }
        cout << *p << " ";
        count++;
    }
    cout << endl;

    return 0;
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM