我如何解决这个问题而不是一个参考数组?

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 ( &currentMap )[100][100], size_t screenX, size_t screenY);