2012-10-13 6 views
0

J'ai un doute très basique. À partir du code ci-dessous, j'ai déclaré Board [] [] comme un tableau de caractères global. Je voudrais initialiser le tableau dans une fonction appelée init_board(). Mais le compilateur retourneAccéder à la variable globale dans la fonction C++

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

code:

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

Quelle est l'erreur de base que je fais ... s'il vous plaît souligner !!

Merci

+0

Cela n'a rien à voir avec les globals. Cela a à voir avec les initialiseurs. – Joe

+0

'La carte [2] [2]' est hors de portée. Puisque 'Board' a deux lignes et deux colonnes, seuls' 0' et '1' sont des valeurs de ligne/colonne légales. –

+0

@DavidSchwartz Je ne vois pas où je suis sur le champ de tir ... J'ai 2 éléments dans 2 rangées dans 'Board [2] [2] = {{'a', 'b'}, {'c', 'd '}}; ' –

Répondre

2

La syntaxe d'initialisation peuvent être utilisés que tout en déclarant le tableau, à savoir

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

Dans tous les autres cas, vous devez parcourir les éléments du tableau et les définir.

+0

Merci! Ça marche ! :RÉ –

0

Vous indexez Board [2] [2] dans init_board() vous indexez en-dehors de la taille spécifiée du tableau, c'est-à-dire que vous avez spécifié que le tableau contient 2 lignes et 2 colonnes mais que vous indexez dans l'élément 3 (l'indexation commence à 0 en C/C++ et quelques autres langues). Vous pouvez initialiser le tableau au moment de la compilation en haut du fichier où vous l'avez déclaré:

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

Ou vous pouvez initialiser chaque élément individuellement comme d'autres l'ont suggéré.

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

Ce Sould fixer ... Lorsque vous utilisez Conseil [2] [2] vous ne reffering à celui omble chevalier dans la position [2] [2]. Cela signifie que vous ajouteriez a, b, c et d à une seule bouchée de la carte

Questions connexes