gpt4 book ai didi

c++ - 读取二维数组作为 C++ 函数中的参数?

转载 作者:行者123 更新时间:2023-11-28 07:02:14 25 4
gpt4 key购买 nike

我正在尝试将二维字符数组传递到头文件中声明的函数中。

//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++ 的初学者,我对指针甚至头文件都不是很了解。我尝试在没有任何指针的情况下传入二维数组,但编译器给了我一个错误:

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

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

我该怎么办?任何人都可以检查我的代码并准确地告诉我哪里出了问题吗?

最佳答案

您的代码与自身不一致。

char board[10][10];

这表示棋盘是一个 10 x 10 的二维数组。

makeBoard(board, boardSize);

这会将 board 传递给 makeBoard,只有当 makeBoard 的第一个参数与 10 x 10 二维数组兼容时才会起作用.

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

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

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

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

关于c++ - 读取二维数组作为 C++ 函数中的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22272812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com