2012-10-13 37 views
0

我有一个非常基本的疑问。从下面的代码中,我宣布Board [] []为全局char数组。我想用一个名为init_board()的函数初始化这个数组。但是,编译器返回访问函数C++中的全局变量

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

什么是我提出的基本错误...请指出!

由于

+0

这与全局无关。它与初始化器有关。 – Joe

+0

Board [2] [2]'超出范围。由于Board有两行两列,只有'0'和'1'是合法的行/列值。 –

+0

@DavidSchwartz我不能看到我在拍摄范围内的位置......我在Board中有2行2个元素[2] [2] = {{'a','b'},{'c','d '}};' –

回答

2

的初始化语法仅可在声明阵列,即

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

在所有其他情况下,需要通过数组元素浏览和设置它们被使用。

+0

Thanx!有用 ! :d –

0

您正在将init_board()中的Board [2] [2]编入索引,该索引是指定数组大小的限制,即您已指定数组为2行和2列,但您正在索引到元素3中(在C/C++和其他一些语言中,索引从0开始)。 您可以在文件的顶部初始化在编译时数组,其中已宣布它:

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

也可以单独初始化每个元素作为其他建议。

0
void init_board() 
{ 
Board = {{'a','b'},{'c','d'}}; 
} 

这解决前人的精力吧... 当您使用 板[2] [2]你只reffering到一个字符的位置[2] [2]。因此,这意味着你将添加一个,B,C和D到董事会只有一口。