C语言高手请进……在线等 int a[ ] [3] = {{1,0,2},{ },{2,3}}; 这个语句有什么错误?

这不是我写的代码哈,这是书上的题,这条语句不能对外部数组a进行初始化,可我不知道为什么……全角半角的问题不是问题……... 这不是我写的代码哈,这是书上的题,这条语句不能对外部数组a进行初始化,可我不知道为什么……全角半角的问题不是问题…… 展开
 我来答
hostfj
2011-04-02
知道答主
回答量:16
采纳率:0%
帮助的人:19.1万
展开全部
答:提问者主动声明排除了书写时出现输入法切换导致的书写错误的可能,单从这句来看语法方面没有任何错误,错误关键在于你问题补充时的一句“外部数组”!
说明:
1.C语言中二维数组初始化时第二维不可以省略,而第一维是可以省略的;
2.外部数组只能在原文件中加外部全局变量extern初始化后在外部引用,因此不能在此程序中对外部数组变量进行初始化;

以下为测试源代码以及 Linux GCC下编译运行结果:
#include<stdio.h>
int main()
{
int i,j;
int a[][3] = {{1,0,2},{},{2,3}};
for(i = 0;i < 3;i ++)
{
for(j = 0;j < 3;j ++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}

运行结果:
1 0 2
0 0 0
2 3 0

以事实说话,实践才是真理……
starfar1983
2011-04-02 · TA获得超过2259个赞
知道小有建树答主
回答量:692
采纳率:0%
帮助的人:1062万
展开全部
第一个维度不能省略。
要改成:
int a[3][3] = {{1,0,2},{ },{2,3}};
或者可以省略第二个维度(只有最后一个维度可以省略):
int a[3][] = {{1,0,2},{ },{2,3}};
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sorrow08
2011-04-02 · TA获得超过1718个赞
知道小有建树答主
回答量:937
采纳率:0%
帮助的人:431万
展开全部
一楼的不会别误导别人好不?第二维才是不能为空的。第一维可以为空,第二维一定一定不能为空。
这个的错误确实中间那个{}的问题,一定至少要有一个值的。假如只有赋值一个值,那后后面的系统自动赋值为0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-02
展开全部
N维数组中的前N-1维中的值不能省略,除非你把每N维数组的个数都写出来。
例如:a[]={1,2,3};或a[3]=...
a[][3]={{1,2,3},{2,0,4},{,,}};或a[3][3]=..
a[][3][2]={{{0,0},{,}},{{1,2},{3,4},{{,3},{4,6}}};或a[1][3][2]
......
starfar1983的回答是正确的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tidecao2006
2011-04-02 · TA获得超过1229个赞
知道小有建树答主
回答量:842
采纳率:0%
帮助的人:808万
展开全部
写代码的时候一定不要开输入法,你写的分号是全角的,删了重新写。
还有多余的空格不要随便留。
你写的语法完全没有问题。
既然谈到外部数组了,那你更不能在这个文件里面初始化了,只能用语句初始化。 在哪儿定义了在哪儿初始化,你要用它的话只能用extern申明。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式