C中的数组或数组元素?

时间:2014-06-06 03:00:42

标签: c arrays element

我正在读一本关于C编程的书,我不确定书中是否有错误。它关于数组并有以下数组示例:

enter image description here 然后它说:

  

以下语句将数组第2行中的所有元素设置为零:    for( column = 0; column <= 3; column++) a[ 2 ][ column ] = 0;

     

前面的for语句等同于赋值语句: a[ 2 ][ 0 ] = 0; a[ 2 ][ 1 ] = 0; a[ 2 ][ 2 ] = 0; a[ 2 ][ 3 ] = 0;

不应该说&#34;以下语句将第1行中的所有元素设置为零&#34; ?.因为如果我说[3]我说的是第2行,如果我说[2]我说的是第1行,如果我说[1]我说的是第0行。

5 个答案:

答案 0 :(得分:1)

我认为这本书意味着数组中实际上有3行:#0,#1,#2。他们正在修改第2行第2行。

答案 1 :(得分:1)

C使用row-major order和从零开始的索引来引用数组索引。您提供的有关本书内容的说明与此一致。

答案 2 :(得分:1)

  

不应该说“以下语句将第1行中的所有元素设置为零”。

即可。它不应该。在C中,数组索引从0开始。在第196页的同一本书中,作者说:

  

每个数组中的第一个元素是第零个元素。因此,数组c的第一个元素称为c [0],...

答案 3 :(得分:0)

作者似乎是从零开始计算,就像数组如何从索引0而不是c中的索引1开始一样。

正如其中一条评论所问:你的意思是想知道作者是否应该说&#34;第3行&#34;而不是&#34;第2行和第34行;因为行被索引2,所以数组中的第三行是什么?

无论如何,书中没有错误。

答案 4 :(得分:0)

哪一行是“第2行”是一个惯例问题。您发布的图片非常明确且明确地确定了约定:行从0开始编号。这意味着a[0][i]引用第0行中的元素,而a[2][i]引用第2行中的元素。因此我在那句话中看不出任何错误。

而且,我看不出在任何有意义的约定下它怎么可能是“第1行”。看到有人称之为“第3行”,而不是“第1行”,我不会感到惊讶......为什么“第1行”?你的断言“如果我说[3]我说的是第2行,如果我说[2]我说的是第1行,如果我说[1]我说的是第0行”< / em>遇到同样的问题。我没有看到任何逻辑。