关于C语言定义二维数组的问题

以下能正确定义二维数组的是()(正确答案:B)A)inta[][3];B)inta[]={2*3}C)inta[][3]={};D)inta[2][3]={{1},{2}... 以下能正确定义二维数组的是()(正确答案:B)
A) int a[ ][3];
B) int a[ ]={2*3}
C) int a[ ][3]={ };
D) int a[2][3]={{1},{2},{3,4}};
为什么上边这道题的答案是B,不是C?还有,“int a[ ][3]={2*3};”和“int a[ ][3]={6}"等价吗?
不好意思啊!我是在自学C语言,还没学到指针那块,麻烦大家尽量解释得浅显些,谢谢大家! 另外,刚才打错了,B选项应该是“int a[ ][3]={2*3};”
展开
 我来答
L_o_o_n_i_e
2010-08-13 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5145万
展开全部
以下能正确定义二维数组的是 -- 以下能正确定义 数组的是 (去掉二维两字)。

A) int a[ ][3]; -- 语法错,没带初始化,不允许用 [空白],不允许 数组大小不定。

B) int a[ ]={2*3} -- 正确定义了数组,是一维数组,数组元素只有1 个,初始化数值为 2*3 ,就是 6。

C) int a[ ][3]={ }; -- 语法错,花括号里没填初始化数值。

D) int a[2][3]={{1},{2},{3,4}}; -- 语法错,数组声明为2行3列,却初始化为3行2列。 如果是 int a[3][2]={{1},{2},{3,4}}; 语法就正确了。

所以答案是 B
熊冉洪洋
2019-08-22 · TA获得超过4096个赞
知道大有可为答主
回答量:3147
采纳率:26%
帮助的人:221万
展开全部
首先你要理解二维数组的真正含义,它的第一维就是一组数据的起始地址,第二维就是某组数据中的某个值.其次,你要知道a[][4]所表达的意思,是指二维数组a的每一维都是由4个元素组成的一维数组.而编译器可以根据你赋给a的初值个数计算它的第一维长度(元素总个数/4,如果不能整除,则长度加1,此时还应该有几个没有赋初值的数组元素).而a[3][]的意思从表面上看可以成立,但问题是编译器不能直接识别其第二维的确切长度(你可以考虑,如果总的初值个数为2时,可以认为a的第二维长度为1,也可以是2,.......),这样就会产生错误.所以,可以a[][4]={*,*,*……}这样定义,而不能定义a[3][]={*,*,*……}。
对于你补充的问题,其实我已经讲了.因为赋初值是5个元素,所以5/4=1,但除不尽,所以要加1,即实际数组a实质上定义为a[2][4],其内元素为:
1234
5000(后面的三个0是系统默认值)
希望对你有所帮助.^-^
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ec39437d4
2010-08-13 · TA获得超过225个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:305万
展开全部
首先明确个概念 二维数组应该是个指针
a是因为不知道确切的大小 所以编译报错 c和a一样
d是因为对二维数组赋值存在问题
b就是个指针
不管是什么数组都是一片连续的内存空间 那么就有个对应的入口地址这个明白 不管是什么数组都是这样的 二维其实是个一维的只是认为规定了下 方便吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
georon
2010-08-13 · 超过34用户采纳过TA的回答
知道答主
回答量:160
采纳率:0%
帮助的人:81.9万
展开全部
你确定你没搞错?int a[]={2*3}是一维数组啊!
二维数组都不是。
A的话给出初始值就是了。
C的话没这样的写法,编译出错。
D的话编译出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式