将2D数组传递给C ++中的函数

时间:2012-05-27 22:27:12

标签: c++ pointers parameters

所以这就是我的问题,因为我一直在互联网上查看一段时间,但似乎无法得到一个明确的答案来使其发挥作用。我正在使用控制台在C ++中创建一个简单的推箱子游戏。

首先,我很确定如果数组是一个大数组,由于内存强度将数组传递给函数不是一个好主意。一切都很好,这不应该是一个问题,因为我最多只有大约32x41,我甚至不会达到最大值。我应该传递整个数组还是应该传递指针?

其次,我的数组大小并不总是相同。我不确定这是否是一个重要因素。

第三,如果我要传递指针,在开始使用它们之前如何创建/初始化它们。我的数组是按以下方式创建的:

string line;
string arr[30];
int i = 0;
char mazeArr[30][40];
int k, count;

if (mazeStream.is_open())
{
  while ( mazeStream.good() && !mazeStream.eof() )
  {
      getline (mazeStream,line);
      cout << line << endl;
      arr[i] = line;
      i++;
  }
  mazeStream.close();
  cout << endl;
}

else cout << "Unable to open file"; 

for ( count = 0; count < 12; count ++)
{
    string::const_iterator iterator1 = arr[count].begin();
     k = 0;

    while (iterator1 != arr[count].end())
    {
        mazeArr[count][k] = *iterator1;
        iterator1++;
        k++;
    }
}

现在我想对这个2D数组做的是:

  • 一次取一个元素并创建一个类的实例,具体取决于数组中的符号
  • 将实例放入另一个实例类型为
  • 的数组中

所以最后我将得到第二个实例数组,其中每个实例都依赖于我从第一个数组中获取的符号。同时保留相同的坐标&#39;

非常感谢任何帮助,

由于

1 个答案:

答案 0 :(得分:0)

我会按照以下方式做点什么:

char **createMaze(width, height)
{
    // Dynamically allocate memory creating a pointer array of pointers
    char **maze = new char*[width];

    // Loop to allocate memory for each pointer array
    for(int i = 0; i < width; i++)
        maze[i] = new char[height];

    return maze;
}

int main()
{
    width = 40;
    height = 30;
    char **maze = createMaze(40, 30);

    // You can now access elements from maze just like a normal
    // 2D array   maze[23][12]   - You can also pass this into
    // a function as an arugment      

    return 0;
}

此代码未经测试..因为我是在浏览器XD中编写的。