新微赢技术网

标题: 新手请教一个简单问题 [打印本页]

作者: 边走边看    时间: 2009-11-3 02:00
标题: 新手请教一个简单问题
我在VC++开发系统里面
在头文件里面定义一个二维数组,想把他初始化
如:
int aa[3][4]={{1,2,3,4},{1,2},{5,4,3,2}};
在编译的时候编译系统却报错!!!
怎么回事呢?!!!
作者: 唏唏鉿鉿HJP    时间: 2009-11-3 02:00
没有完全初始化,系统会默认为0
如直接输出上面的数组则为:1 2 3 4
1 2 0 0
5 4 3 2
作者: 冷冷DI草    时间: 2009-11-3 02:00
那也不应该报错啊,他问你为什么抱错
作者: ('葒諺禍氺    时间: 2009-11-3 02:00
我也认为不应该报错啊
但系统就是提示错误

系统提示错误如下:
syntax error : '{'
unexpected token(s) preceding '{'; skipping apparent function body

怎么回事呢?
还请高手赐教!!!
作者: bgag    时间: 2009-11-3 02:00
如果我在头文件里,只是定义,而不进行初始化,就没有问题

如 int aa[3][4];

编译能正常通过

但这样我就必须在.cpp文件里面对数组各个元素进行赋值初始化,这样也未免太麻烦了吧,要是遇到一个如20×20大数组,做这样的赋值初始化都会累掉半条命啊!!!

还望各位xdjm赐教!!!
作者: ˇ风逍遥ˇ    时间: 2009-11-3 02:00
你看看这个行否
#include<iostream.h>
void main()
{
int a[5][5];
cout<<"input the numbers:"<<endl;
for(int i=0;i<=4;i++)
{
for(int j=0;j<=4;j++)
{
a[i][j]=i*5+j;
}
}
for(int m=0;m<=4;m++)
{
for(int n=0;n<=4;n++)
{
cout<<a[m][n];
}
cout<<endl;
}
}
作者: 飞.逝﹏..    时间: 2009-11-3 02:00
c和c++的赋值是从左向右的,是不允许中间有空值的,也不允许默认值
作者: 泪在爱上雕刻    时间: 2009-11-3 02:00
i*5+j;是何用意
作者: 鈊賥wo埋單    时间: 2009-11-3 02:01
你估计是其他的地方大括号出现了问题,你检查一下是不是不小心写错了,至于7楼说的,c++不允许默认? 你老师这样教你的么?
那你试下下面这个代码?看输出的是什么?
#include <iostream>
using namespace std;
int main()
{
int num[2]={0};
cout<<num[0]<<endl<<num[1];
system("pause");
return 0;
}
作者: 我和老公在    时间: 2009-11-3 02:01
我想至于9楼提出的可能是“其他地方的大括号出现问题”,我想其他地方的大括号应该没有问题,因为正如我在5楼说的那样,只是定义而不做初始化,编译能正常通过,我想这足以证明其他地方的大括号没有问题拉!!




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2