加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:38:28 所属栏目:百科 来源:网络整理
导读:将二维数组传递给函数时,形参类型必须包含数的大小声明符,C++ 需要这些信息才能正确地将下标数组引用(如 table[2][1])转换为存列储该元素的内存地址。 下面的程序演示了如何将一个二维数组传递给一个函数。以下是程序中函数 showArmy 的头文件: void sho
将二维数组传递给函数时,形参类型必须包含数的大小声明符,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 二维数组在内存中的位置示意图

当编译器生成访问二维数组元素的代码时,需要知道行在内存中按多少个字节分隔开来,因此,列数是这个计算中的关键因素。

这个必要的列信息也可以用一个 typedef 声明来提供。以下是一个二维数组的 typedef 声明看起来的样子:

typedef int intTable [][4];

该语句使 intTable 成为具有任意行数和 4 列的二维数组的别名。如果这个 typedef 语句已经包含在此程序中,那么 showArray 函数的原型就可以写成如下形式:

void showArray(intTable,int);

其函数头则可以写成以下形式:

void showArray(intTable array,int numRows)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读