所以这就是我的问题,因为我一直在互联网上查看一段时间,但似乎无法得到一个明确的答案来使其发挥作用。我正在使用控制台在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;
非常感谢任何帮助,
由于
答案 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中编写的。