0

私は非常に基本的な疑問を持っています。以下のコードから、Board[ ][ ] をグローバル char 配列として宣言しました。という関数で配列を初期化したいと思いますinit_board()。しかし、コンパイラは戻ります

In function void init_board():
expected primary-expression before '{' token
expected ;' before '{' token

コード:

#include <iostream>
#include <conio.h>

using namespace std;

//global variables---------------
char Board[2][2];

//function declarations----------
void init_board();

int main(void)
{
init_board();

 for(int i=0;i<2;i++)
 { 
 for(int j=0;j<2;j++)
 {
  cout<<Board[i][j]<<" ";
 }
  cout<<"\n";
 }

getch();
}

void init_board()
{
Board[2][2] = {{'a','b'},{'c','d'}}; 
}

私が犯している基本的なエラーは何ですか...指摘してください!!

ありがとう

4

3 に答える 3

2

初期化構文は、配列を宣言している間のみ使用できます。つまり、

char board[2][2] = {{'a', 'b'}, {'c', 'd'}};

それ以外の場合はすべて、配列要素を参照して設定する必要があります。

于 2012-10-13T03:57:51.847 に答える
0
void init_board()
{
Board = {{'a','b'},{'c','d'}};
}

それを修正する必要があります... Board[2][2] を使用する場合、[2][2] の位置にある 1 つの文字のみを参照しています。つまり、a、b、c、および d をボードの 1 バイトだけに追加することになります。

于 2012-10-13T07:05:22.410 に答える
0

init_board() で Board[2][2] にインデックスを付けています。配列の指定されたサイズの範囲外にインデックスを付けています。つまり、配列が 2 行と 2 列であることを指定しましたが、要素 3 にインデックスを付けています (インデックスは、C/C++ およびその他のいくつかの言語では 0 から始まります)。配列を宣言したファイルの先頭で、コンパイル時に配列を初期化できます。

char Board[2][2] = {{'a','b'},{'c','d'}}; 

または、他の人が提案したように、各要素を個別に初期化できます。

于 2012-10-13T04:26:40.640 に答える