• C++二维数组作为函数参数

    将二维数组传递给函数时,形参类型必须包含数的大小声明符,C++ 需要这些信息才能正确地将下标数组引用(如 table[2][1])转换为存列储该元素的内存地址。

    下面的程序演示了如何将一个二维数组传递给一个函数。以下是程序中函数 showArmy 的头文件:

    void showArray(const int array [][NUM_COLS], int numRows)

    showArray 函数可以接受任何二维整数数组,只要它有 4 列。在程序中,这个函数显示了两个独立数组的内容。

    // This program demonstrates how to pass
    // a two-dimensional array to a function.
    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    const int NUM_COLS = 4; // Number of columns in each array
    const int TBL1_R0WS = 3; // Number of rows in table1
    const int TBL2_R0WS = 4; // Number of rows in table2
    
    void showArray(const int [][NUM_COLS], int); // Function prototype
    
    int main()
    {
        int table1[TBL1_R0WS][NUM_COLS] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12} };
        int table2[TBL2_R0WS][NUM_COLS] = {{ 10, 20, 30, 40},{ 50, 60, 70, 80},{ 90, 100, 110, 120},{130, 140, 150, 160} };
        cout << "The contents of table1 are:\n";
        showArray(table1, TBL1_R0WS);
        cout << "\nThe contents of table2 are:\n";
        showArray(table2, TBL2_R0WS);
        return 0;
    }
    void showArray(int const array[][NUM_COLS], int numRows)
    {
        for (int row = 0; row < numRows; row++)
        {
            for (int col = 0; col < NUM_COLS; col++)
            {
                cout << setw (5) << array[row][col] << " ";
            }
            cout << endl;
        }
    }

    程序输出结果:

    The contents of table1 are:
        1     2     3     4
        5     6     7     8
        9    10    11    12

    The contents of table2 are:
       10    20    30    40
       50    60    70    80
       90   100   110   120
      130   140   150   160

    由于二维数组存储在内存中,所以 C++ 要求在函数原型和函数头中指定列。一行实际上跟在另一行之后,如图 1 所示。


    二维数组在内存中的位置示意图
    图 1 二维数组在内存中的位置示意图

更多...

加载中...