繁体   English   中英

读取2D数组作为C ++函数中的参数?

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

我试图将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
}

然后在我的主要功能中另一个.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];

这表示电路板是一个10乘10的二维阵列。

makeBoard(board, boardSize);

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

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

但这表示makeBoard的第一个参数是指向一维数组的指针。 这根本不像2D数组-它们是完全不兼容的。 数组与指向其第一个元素的指针兼容。 因此,指向一维数组的指针具有两个间接级别-指针将您引向一维数组,该数组会衰减为指向第一个元素的指针。 2D数组具有一个间接级别-数组衰减为指向其第一个元素的指针。

那是什么呢? 参数是指向内容的指针还是指向内容的指针?

为什么不使用std::vector而不是数组呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM