【发布时间】:2012-10-13 03:55:24
【问题描述】:
我有一个非常基本的疑问。从下面的代码中,我将 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'}};
}
我犯的基本错误是什么...请指出!!
谢谢
【问题讨论】:
-
这与全局无关。它与初始化程序有关。
-
Board[2][2]超出范围。由于Board有两行两列,因此只有0和1是合法的行/列值。 -
@DavidSchwartz 我看不到我在射击范围内的位置...我在
Board[2][2] = {{'a','b'},{'c','d'}};中有 2 行中的 2 个元素 -
对,所以有效的条目是
Board[0][0]、Board[0][1]、Board[1][[0]和Board[1][1]——这就是四个,两个两个。您的代码尝试为Board[2][2]赋值(因为这是=左侧的值)——但没有Board[2][2]。 (即使有,它也将是单个字符,而不是数组。Board是数组。)我想你在某种程度上想象等号右侧有一个数组的事实会以某种方式将左侧的东西变成一个数组。但这不是=的工作方式。 -
例如,
Board[0][0] = 'a';就可以了。Board[0][0]是数组中的一个字符条目,'a'是它可以采用的值之一。
标签: c++ arrays function multidimensional-array