我如何解决这个问题而不是一个参考数组?
How would I fix this to not be an array of reference?
前言:是的,我知道函数定义中的不一致,我正在尝试编写它。
具体在行
void renderScreen(char& currentMap[100][100], int& screenX, int& screenY)
char& currentMap[100][100]
创建引用数组。我如何在不创建引用数组的情况下将基于 2D 映射(字符数组)的单独字符变量调用到此函数中?
上下文:
#include <iostream>
#define _WIN32_WINNT 0x0500 //win2000, must be before #windows.h
#include <windows.h>
#include <strsafe.h>
#include "declarations.h"
using namespace std;
int main(int screenX, int screenY)
{
SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE), CONSOLE_FULLSCREEN_MODE, 0);
while (!quit) {
}
return 0;
}
void renderScreen(char& currentMap[100][100], int& screenX, int& screenY) {
int xi; int yi;
for (xi = 0; xi < screenX; xi++) {
for (yi = 0; yi < screenY; yi++) {
screen += currentMap[xi][yi];
}
cout << screen << endl;
screen.clear();
}
}
.h 文件
#pragma once
//fns
void renderScreen(char& currentTile, int& screenX, int& screenY);
//vars
string screen;
bool quit = false;
int i; int j;
int screenX; int screenY;
char currentMap[100][100];
char currentTile;
我认为声明为引用的第二个和第三个参数声明没有任何意义
void renderScreen(char& currentMap[100][100], int& screenX, int& screenY);
因为在函数内部用作参数的原始对象在函数内部没有改变。所以函数至少可以这样声明(如果忽略第一个参数的错误声明)
void renderScreen(char& currentMap[100][100], size_t screenX, size_t screenY);
此外,通过引用传递数组也没有什么意义。
函数可以这样声明
void renderScreen(const char ( *currentMap )[100], size_t screenX, size_t screenY);
如果通过引用传递数组,那么函数声明可以像这样
void renderScreen(const char ( ¤tMap )[100][100], size_t screenX, size_t screenY);
前言:是的,我知道函数定义中的不一致,我正在尝试编写它。
具体在行
void renderScreen(char& currentMap[100][100], int& screenX, int& screenY)
char& currentMap[100][100]
创建引用数组。我如何在不创建引用数组的情况下将基于 2D 映射(字符数组)的单独字符变量调用到此函数中?
上下文:
#include <iostream>
#define _WIN32_WINNT 0x0500 //win2000, must be before #windows.h
#include <windows.h>
#include <strsafe.h>
#include "declarations.h"
using namespace std;
int main(int screenX, int screenY)
{
SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE), CONSOLE_FULLSCREEN_MODE, 0);
while (!quit) {
}
return 0;
}
void renderScreen(char& currentMap[100][100], int& screenX, int& screenY) {
int xi; int yi;
for (xi = 0; xi < screenX; xi++) {
for (yi = 0; yi < screenY; yi++) {
screen += currentMap[xi][yi];
}
cout << screen << endl;
screen.clear();
}
}
.h 文件
#pragma once
//fns
void renderScreen(char& currentTile, int& screenX, int& screenY);
//vars
string screen;
bool quit = false;
int i; int j;
int screenX; int screenY;
char currentMap[100][100];
char currentTile;
我认为声明为引用的第二个和第三个参数声明没有任何意义
void renderScreen(char& currentMap[100][100], int& screenX, int& screenY);
因为在函数内部用作参数的原始对象在函数内部没有改变。所以函数至少可以这样声明(如果忽略第一个参数的错误声明)
void renderScreen(char& currentMap[100][100], size_t screenX, size_t screenY);
此外,通过引用传递数组也没有什么意义。
函数可以这样声明
void renderScreen(const char ( *currentMap )[100], size_t screenX, size_t screenY);
如果通过引用传递数组,那么函数声明可以像这样
void renderScreen(const char ( ¤tMap )[100][100], size_t screenX, size_t screenY);