猿问

请问一下。这两个的区别?

int score[6][3]={{0},{0},{0}};

int score[6][3]={{0},{0},{0},{0},{0},{0}};

慕粉18029504947
浏览 1256回答 3
3回答

onemoo

你这两个代码没有区别。都是把所有元素初始化为 0。对于数值类型数组,数组大小比初始化列表中提供的初值个数多的,多出的没有指定初值的元素会被初始化为 0。第一个 score 数组:初始化列表只提供了 3 个元素的初值,且这 3 个元素也只提供了 1 个值,但其他元素会被初始化为 0,所以最后 score 中全部都是 0。第二个 score 数组:这次初始化列表提供了 6 个元素的初值,其他和上面没有区别,最终 score 中仍然全都是 0。

慕粉1529473653

怎么说,应该是有区别的,但是最终还是没有区别,区别的地方就是有些未被自己初始化,但是没区别的就是结果一样,因为编译运行后结果都一样。有时候过程可以不必斤斤计较,结果是一样的,如果只是想要初始化为0,那么就这样吧 int score[6][3] = {0};

Sival_Eulyn

被允许这样书写的是初始化过程的赋值;score[m][n]是二维数组,外层括号定义一个行,内层定义m个列,每个列有n个元素数组初始化顺序进行,没涉及的元素相当于是缺省值(未经初始化时的值);{{0},{0},{0}} <=> {{0, ?, ?},{0, ?, ?},{0, ?, ?},{?, ?, ?},{?, ?, ?},{?, ?, ?}}{{0},{0},{0},{0},{0},{0}} <==> {{0, ?, ?},{0, ?, ?},{0, ?, ?},{0, ?, ?},{0, ?, ?},{0, ?, ?}}
随时随地看视频慕课网APP
我要回答