2014-06-11 49 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; 
}