为什么这个数组声明中的这些值?

时间:2015-05-19 23:25:13

标签: c++ arrays

我试图理解这段代码:

String []stringarray = new String[10];

public void add()
{
    System.out.println ("Enter 10 Strings :");
    for ( int i=0; i<10  ; i++ )
        stringarray[i] = Genio.getString(); 
}

public void display()
{
    for (int i=0; i<10/2; i++)
    {
        String tmp = stringarray[i];
        stringarray[i] = stringarray[10 - i - 1];
        stringarray[10 - i - 1] = tmp;
        System.out.println (stringarray[i]);
    }
}

逻辑上, const int STUDENTNO(3); const int MODULENO(4); double marks[STUDENTNO][MODULENO] = { { 89.0, 22.5, 43.2, 34.0 }, { 66.5, 26.0, 47.4, 0.0 }, { 89.0, 30.8, 71.3, 12.0 } }; STUDENTNO的值应减1,假设数组中的第一个位置为MODULENO

有人可以解释一下为什么不是这样吗?

2 个答案:

答案 0 :(得分:2)

如果您有一个大小为N的数组,则有效索引在C和C ++中从0N-1

这也扩展到多维数组。当您有一个大小为M x N的数组时,有效索引从[0][0][M-1][N-1]

答案 1 :(得分:1)

有3名学生和4个模块。所以学生人数是3,模块数量是4.这真的很简单。用于特定学生和特定模块的标识符与学生或模块的数量无关。

如果您尝试在提供的代码中减少STUDENTNOMODULENO,则marks的声明将是非法的,因为它指定了3名学生和4个模块的标记。 (试试吧。)