[英]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.