无法将二维字符数组初始化为所有空白区域

时间:2014-06-11 02:48:36

标签: c++ arrays function whitespace multidimensional-array

当我使用此代码时:

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

void InitBoard(char boardAr[][3])
{
    boardAr[3][3] = {' ',' ',' ',' ',' ',' ',' ',' ',' '};
}

我收到此错误:

cannot convert '<brace-enclosed initializer list>' to 'char' in assignment

5 个答案:

答案 0 :(得分:1)

您可以使用以下方式初始化多维数组(c ++)。

char boardAr[3][3] =
{
    {' ', ' ', ' '},
    {' ', ' ', ' '},
    {' ', ' ', ' '}
};

希望这有帮助!

答案 1 :(得分:0)

您尝试使用带分配的初始化程序。您只能使用具有初始化的初始化程序。你试图做的事情是不可能的。

答案 2 :(得分:0)

声明

boardAr[3][3] = ...

是对第四行boardAr的第四列的赋值。它不是数组本身的赋值。

如果要将整个内存范围有效地初始化为已知值,可以使用memset或memcpy。

答案 3 :(得分:0)

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

void InitBoard(char boardAr[][3])
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            boardAr[i][j] = ' ';
        }
    }
}

这是初始化数组的正确方法

答案 4 :(得分:0)

C中没有二维数组,内部二维数组是一维数组。考虑到这个事实,我们可以使用memset()来初始化2D数组或任何具有连续内存布局的结构或任何东西。 please refer here

void InitBoard(char boardAr[][3], const int row, const int col)
{
    memset(boardAr, ' ', sizeof(char)*row*col); // you can use any other value also, here we used ' '.  
}

void main(int argc, char* argv[])
{
    char arr[3][3];
    InitBoard(arr, 3,3); // It initialize your array with ' '
    return 0;
}