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

时间:2014-03-08 17:46:17

标签: c++ arrays pointers

我正在尝试将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'

所以我尝试输入上面列出的指针,我得到了同样的错误

我该怎么办?任何人都可以通过我的代码告诉我究竟出了什么问题吗?

1 个答案:

答案 0 :(得分:1)

您的代码与自己不一致。

char board[10][10];

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

makeBoard(board, boardSize);

这会将board传递给makeBoard,只有当makeBoard的第一个参数与10 x 10 2D阵列兼容时才会有效。

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

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

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

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