在c++中读取一个2D数组作为函数的参数

Reading in a 2D array as an argument in a function in C++?

本文关键字:数组 2D 函数 参数 一个 c++ 读取      更新时间:2023-10-16

我试图将2D char数组传递到头文件中声明的函数。

//Proj1Aux.h
#ifndef PROJ1AUX_H
#define PROJ1AUX_H
void makeBoard(char (*myBoard)[10], int boardSize);
void printBoard(char (*myBoard)[10], int boardSize);
#endif

我定义的函数如下:

//Proj1Aux.cpp
#include <iostream>
#include "Proj1Aux.h"
using namespace std;
void makeBoard(char (*myBoard)[10], int boardSize)
{
    //code
}
void printBoard(char (*myBoard)[10], int boardSize){
    //code
}

然后在main函数中另一个。cpp文件中:

//Proj1.cpp

#include <iostream>
#include <cstdlib>
#include "Proj1Aux.cpp"
using namespace std;
int main(int argc, char* argv[]){
    //code...
    //more code...
    char board[10][10];
    makeBoard(board, boardSize);
    printBoard(board, boardSize);
}

我是c++的初学者,我对指针甚至头文件都没有很好的把握。我尝试在没有任何指针的2D数组中传递,但编译器给了我一个错误:

invalid conversion from 'const char*' to 'char'

所以我试着把上面列出的指针,我得到同样的错误

我该怎么办?谁能检查一下我的代码,告诉我到底哪里出了问题?

你的代码不一致。

char board[10][10];

这表示board是一个2D数组,10 × 10。

makeBoard(board, boardSize);

board传递给makeBoard,只有当makeBoard的第一个参数与10 × 10的2D数组兼容时才会起作用。

void makeBoard(char (*myBoard)[10], int boardSize)

但是这里说makeBoard的第一个参数是一个指向1D数组的指针。这与2D数组完全不同——它们完全不兼容。数组与指向其第一个元素的指针兼容。因此,指向1D数组的指针有两个间接层次——指针指向1D数组,该数组衰变成指向第一个元素的指针。2D数组具有一级间断性——数组衰减为指向其第一个元素的指针。

那么,是哪一个呢?形参是指向内容的指针,还是指向指向内容的指针?

为什么不使用std::vector代替数组?