3 回答
TA贡献883条经验 获得超454个赞
你这两个代码没有区别。都是把所有元素初始化为 0。
对于数值类型数组,数组大小比初始化列表中提供的初值个数多的,多出的没有指定初值的元素会被初始化为 0。
第一个 score 数组:初始化列表只提供了 3 个元素的初值,且这 3 个元素也只提供了 1 个值,但其他元素会被初始化为 0,所以最后 score 中全部都是 0。
第二个 score 数组:这次初始化列表提供了 6 个元素的初值,其他和上面没有区别,最终 score 中仍然全都是 0。
TA贡献8条经验 获得超2个赞
怎么说,应该是有区别的,但是最终还是没有区别,区别的地方就是有些未被自己初始化,但是没区别的就是结果一样,因为编译运行后结果都一样。有时候过程可以不必斤斤计较,结果是一样的,如果只是想要初始化为0,那么就这样吧 int score[6][3] = {0};
TA贡献8条经验 获得超2个赞
被允许这样书写的是初始化过程的赋值;
score[m][n]是二维数组,外层括号定义一个行,内层定义m个列,每个列有n个元素
数组初始化顺序进行,没涉及的元素相当于是缺省值(未经初始化时的值);
{{0},{0},{0}} <=> {{0, ?, ?},{0, ?, ?},{0, ?, ?},{?, ?, ?},{?, ?, ?},{?, ?, ?}}
{{0},{0},{0},{0},{0},{0}} <==> {{0, ?, ?},{0, ?, ?},{0, ?, ?},{0, ?, ?},{0, ?, ?},{0, ?, ?}}
- 3 回答
- 0 关注
- 1262 浏览
添加回答
举报