c++ - 我将如何将其修复为不是参考数组?
问题描述
前言:是的,我知道函数定义的不一致,我正在尝试编写这个东西。
具体符合
void renderScreen(char& currentMap[100][100], int& screenX, int& screenY)
char& currentMap[100][100]
创建一个引用数组。如何在不创建引用数组的情况下将基于 2D 映射(字符数组)的单独 char 变量调用到此函数中?
语境:
#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);
推荐阅读
- c++ - 如何使用 C++ 在 cmd 中执行具有管理权限的命令?
- verilog - 使用管道将信息从系统 verilog 测试台传递到 C++ 程序
- python - Python 将行写入 UCS-2 LE BOM 编码的文本文件
- android - 用于类似 stroies 的 Instagram 的 Android 库或功能
- operating-system - 帧号实际上是页面存储在分页中的内存基地址吗?
- python - TensorFlow 2.0 和 TensorFlow Hub:load_module_spec 等效?
- python - 在不使用 unittest 模块的情况下测试 API 包装器
- php - 如何显示数据库中的所有表名?
- ios - UIActivityIndicator 添加 AppDelegate
- facebook-authentication - VueJS Facebook 身份验证`withCrednetials` 无法用于生产(Heroku)