在函数c ++中访问全局变量

时间:2012-10-13 03:55:24

标签: c++ arrays function multidimensional-array

我有一个非常基本的疑问。从下面的代码中,我已将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'}}; 
}

我正在制作的基本错误...请指出!!

由于

3 个答案:

答案 0 :(得分:2)

初始化语法只能在声明数组时使用,即

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

在所有其他情况下,您需要浏览数组元素并进行设置。

答案 1 :(得分:0)

您正在索引init_board()中的Board [2] [2],您正在索引数组的指定大小的越界,即您已指定该数组是2行和2列,但您正在索引到元素3(索引从C / C ++和其他几种语言的0开始)。 您可以在编译时在您声明它的文件顶部初始化数组:

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

或者您可以像其他人建议的那样单独初始化每个元素。

答案 2 :(得分:0)

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

可以解决它...... 当你使用 Board [2] [2]你只是在位置[2] [2]中的一个字符。因此,这意味着您只需将a,b,c和d添加到董事会的一口