将2D数组作为自变量传递给采用1D数组的函数

Passing 2D array as an argument to a function which takes 1D array

本文关键字:数组 1D 函数 2D 自变量      更新时间:2023-10-16

这听起来像个愚蠢的问题:

是否可以将2D数组作为参数传递给采用1D数组的函数

例如:

我有一个数组players[4][5]和一个函数bestCard(),该函数的头看起来像这样的void bestCard(int arr[5])<-该5是指阵列players 的第二维度

我想在函数bestCard()中传递players[4][...],使最后一个维度被认为是一个数组,即players[5]

不确定我的问题是否全面。

2D阵列是1D阵列的阵列。

在您的情况下,这意味着player[i]是一个由五个元素组成的数组,其中i位于03之间。因此,将player[i]传递给函数将传递一个由5个元素组成的数组(或者更严格地说,是一个指向5个元素数组中第一个元素的指针)。

我是C++的初学者,但据我所知,如果您没有重载bestCard()函数以获取不同类型的参数,那么将二维数组传递给函数bestCard()是不可能的。

根据你在问题中给我的信息,我猜有4名玩家,每人持有5张牌。

如果你想通过一个玩家的手牌bestCard(),你必须写这样的东西:

bestCard(players[0]) // Determine the bestCard for the first player.
bestCard(players[1]) // Determine the bestCard for the second player.
...
bestCard(players[3]) // Determine the bestCard for the fourth player.

尽管players实际上是二维阵列,但每个players[i](对于0 < i < 4)都评估为一维阵列。因此,bestCard()应该能够接受它们作为一个论点。