2d数组错误:行索引打印

时间:2017-02-26 12:37:12

标签: c++

实际上我正在打算用户打印2d数组。然后按行添加数字。 我不知道如何打印行索引号。代码是:

int arr[3][3];
int sum = 0;

for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 3; j++)
        cin >> arr[i][j];
}

cout << endl;
for (int i = 0; i < 3; i++)
{
    for (int j= 0; j < 3; j++)
        cout<< arr[i][j]<<" ";
    cout << endl;
}


for (int x = 0; x < 3; x++)
{
    for (int y = 0; y < 3; y++)

        sum += arr[x][y];
    cout << "Row: " << arr[x] << "addition is:" << sum << endl;
    sum = 0;
}

在第二行arr [x]打印地址。 如果我使用arr [x] [y]它会告诉(&#39; y&#39;未定义)。为什么&#39; y&#39;未定义? 亲切的告诉我如何对角添加数字...?

3 个答案:

答案 0 :(得分:2)

arr[x]是一个数组,它衰减到指向其第一个元素的指针。因此,当您打印arr[x]时,您实际上正在打印&arr[x][0]

我假设您只想打印x

cout << "Row: " << x << ...

答案 1 :(得分:1)

'y'未定义,因为它超出了它的范围。

要沿对角线添加数字,您可以执行以下操作:

sum = 0;
for (int i = 0; i < 3; ++i)
    sum += arr[i][i];

答案 2 :(得分:0)

我建议你总是在循环上使用括号。此

 for (int y = 0; y < 3; y++)
    sum += arr[x][y];
 cout << "Row: " << arr[x] << "addition is:" << sum << endl;

相当于

 for (int y = 0; y < 3; y++) {
    sum += arr[x][y];
 }
 cout << "Row: " << arr[x] << "addition is:" << sum << endl;

并且未声明循环y之外。你可能想要

for (int y = 0; y < 3; y++) {
   sum += arr[x][y];
   cout << "Row: " << arr[x] << "addition is:" << sum << endl;
}

此外,您说要打印行索引,可以是xy,而不是arr[x][y],它是索引[x][y]的元素。< / p>