2014-06-11 48 views
0

当我使用此代码:初始化一个二维字符数组的所有空白遇到问题

#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 

回答

0

您正在尝试使用的初始化器与分配。您只能使用初始化程序进行初始化。你试图做的事情是不可能的。

0

声明

boardAr[3][3] = ... 

是分配给boardAr的第四行的第四列。这不是数组本身的任务。

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

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] = ' '; 
     } 
    } 
} 

这是正确的方式来初始化数组

1

您可以初始化以下方式多维数组(C++)与价值观。

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

希望这有助于!

0

C中没有二维数组,内部二维数组是一维数组。考虑到这个事实,我们可以使用memset()初始化二维数组或任何具有连续内存布局的结构或任何东西。 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; 
}