试图使用多维数组指针
Trying to use multidimensional array pointers
我正在寻找一个解决方案,但我不能使用任何没有错误。我试图在控制台绘制地图,使用多维数组。我想有更多的地图,但我不能没有垃圾代码。这是地图:
char map2[11][15] = {
"###^######^###",
"#L #",
"^S #",
"#S #",
"# K #",
"########### #",
"#G #",
"# #### #",
"# #M #",
"# @ # #",
"## ########^##"};
,这是移动脚本:
void Game::showing_different_maps()
{
differentmap= true;
while (differentmap)
{
system("cls");
for(int i = 0; i < 81; i++) // i < map2[y][]
{
cout << somemap[i] << endl; // drawing a map !THIS CAUSES CRASH!
}
system("pause>nul"); // this line prevent lagging somehow
if(GetAsyncKeyState(VK_UP)) // arrows to move on axis (y, x)
{
mapka.move(-1, 0);
}
if(GetAsyncKeyState(VK_DOWN))
{
mapka.move(1, 0);
}
if(GetAsyncKeyState(VK_RIGHT))
{
mapka.move(0, 1);
}
if(GetAsyncKeyState(VK_LEFT))
{
mapka.move(0, -1);
}
}
}
这是我在网上找到的。
Wut wut(3, 13);
Maps *wsk;
pointer = &wut;
char (*somemap)[81] = new char[81][81];
somemap= &map2[81];
pointer = &wut;
pointer -> get_in_area();
我想做的是:在代码的某些部分,我希望指针是map2。我设法使指针"指针"在类地图中显示void get_in_area(),但控制台崩溃,当我想在第二个代码示例中用一些地图指针绘制地图时。当我用map2[i]代替somemap[i]时,它是有效的。如果我错过了什么,我很抱歉,我是初学者,英语不是我的第一语言。我用这个教程制作了这个脚本:https://www.youtube.com/watch?v=7gpH7bOS350
下面是创建二维数组的方法:
typedef int T;
void f()
{
T ** map = new T*[10];
for (int i = 0; i < 10; i++)
{
map[i] = new T[10];
}
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
map[i][j] = i*j;
}
}
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
std::cout << map[i][j] << "t";
}
std::cout << std::endl;
}
}
这将输出一个通用乘法表。
如果你想要更多的维度,你只需要在创建中添加一个步骤:
T*** map = new T**[10];
for (int i = 0; i < 10; i++)
{
map[i] = new T*[10];
}
...
您应该学习如何传递参数,而不是使用全局(map2
)或静态(81)变量。如果声明:
void Game::showing_different_maps(int n, int m, char map[n][m])
{
String differentmap= true;
while (differentmap)
{
system("cls");
for(int i = 0; i < n; i++) // i < map2[y][]
{
cout << somemap[i] << endl; // drawing a map !THIS CAUSES CRASH!
}
你应该不再崩溃…
但无论如何,对于这种用法,我将使用指针指向指针而不是2d数组:
char *map2[]= {
"###^######^###",
"#L #",
"^S #",
"#S #",
"# K #",
"########### #",
"#G #",
"# #### #",
"# #M #",
"# @ # #",
"## ########^##"};
和
void Game::showing_different_maps(int n, char **map)
相关文章:
- 添加到数组指针
- C++语法差异:二维和一维数组(指针算术)
- 数组指针表示法C++(移动数组时)
- 复制后删除原始数组指针将前 3 个字节设置为 0
- C++访问指向结构的指针中的类数组指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- std::flush可以用于将对象指针转换为其封闭数组指针吗
- 创建<int>对整数数组指针的矢量引用 (C++)
- 将 2D 数组指针传递给 C++ 中的函数
- 创建指针是否超过非数组指针的末尾,而不是从 C++17 中的一元运算符和未定义的行为派生?
- 队列数组指针 (C++)
- C++数组指针上的删除操作
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 如何初始化数组指针对象
- 如何正确传递 2D 数组指针作为参数
- 从数组指针中获取怪异的数字
- 初始化std :: unique_ptr作为原始数组指针的初始化
- 将结构数组指针从C#传递到C
- STD :: Sort将数组指针设置为NULL
- C++数组指针错误无法将“int*”转换为“int**”