首页 > 解决方案 > c++函数调用char作为参数

问题描述

我的功能定义如下

void initBoard(char board[3][3]){
    for (int x=0; x<3; x++){
        for (int y=0; y<3;y++){
            board[x][y] = '-';
            std::cout << board[x][y];
            if (y == 0 || y == 1){
                std::cout << '|';
            }
            else if (y == 2){
                std::cout << std::endl;
                if (x != 2){
                    std::cout << "-----" << std::endl;
                }
            }
            }
        }
}

我如何在我的函数中调用这个函数int main()来打印电路板?

我可以这样做吗

int main(){
    initBoard(char board[3][3]);
    return 0;
}

编辑:我修好了,但我还是想了解函数调用的c++逻辑我所做的是

int main(){
    char board[3][3];
    initBoard(board);
    return 0;
}

通过首先声明板,如果我有任何其他函数需要char board[3][3]作为参数,我必须先在函数参数中声明它并在主函数中声明一次才能进行任何函数调用?

标签: c++

解决方案


在 C++ 中,编译器需要知道关于参数的这些事情,

  1. 参数的类型。
  2. 变量的名称(可选)。
  3. 默认参数(可选)。

当您定义一个参数(在您的情况下char board[3][3])时,这只是一个容器。想象一下,当你在机场时,当你通过金属探测器时,他们会给你桶来放你的物品。桶就是这里的参数变量,你的东西就是数据。发送一个空桶是行不通的吗?所以你需要为它提供数据(除了你提供一个默认参数)。

这就是为什么这样做会标记错误的原因,

int main(){
    initBoard(char board[3][3]);
    return 0;
}

但这并没有,

int main(){
    char board[3][3];
    initBoard(board);
    return 0;
}

简单来说,this:void initBoard(char board[3][3])和 this:char board[3][3]是两个不同的东西。一种是函数存储数据以供处理的方式,另一种是包含数据的主要变量。


推荐阅读