以下能正确定义二维数组的是()(正确答案: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};”
关于C语言定义二维数组的问题
答案:3 悬赏:50
解决时间 2021-11-24 09:09
- 提问者网友:践踏俘获
- 2021-11-24 01:47
最佳答案
- 二级知识专家网友:飘零作归宿
- 2021-11-24 02:29
以下能正确定义二维数组的是 -- 以下能正确定义 数组的是 (去掉二维两字)。
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
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
全部回答
- 1楼网友:狠傷凤凰
- 2021-11-24 04:19
首先 假如定义一个一维数组 int ary[];
缺少了一维数组的长度 系统无法按大小分配空间;
但假如int ary[] = {1,2};
就可以根据初始化的元素个数来把ary定义成相当于ary[2];
这应该能懂
再次
c语言中没有多维数组的概念 我们平常说的二维数组其实是“数组的数组” c语言对多维数组的定义也是定义成
"数组的数组的数组的..."
所以 当定义二维数组int a[][4] = {1,2,3,4,5,6,7,8};
其实是 “定义了两个以[4]为长度的数组”(这说法可能不准确)
所以在定义二维数组并初始化时 需要指明第二维的长度 好让编译器根据初始化元素的个数来确定数组的大小
文字表述欠缺专业 但 意思是这样 希望能明白
呵呵
- 2楼网友:晨与橙与城
- 2021-11-24 02:56
首先明确个概念 二维数组应该是个指针
a是因为不知道确切的大小 所以编译报错 c和a一样
d是因为对二维数组赋值存在问题
b就是个指针
不管是什么数组都是一片连续的内存空间 那么就有个对应的入口地址这个明白 不管是什么数组都是这样的 二维其实是个一维的只是认为规定了下 方便吧
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯