C ++通过函数打印出2D数组

时间:2018-03-19 13:52:26

标签: c++ windows c++11

所以我试图通过一个打印出2D数组中的值 函数叫printArray,但每当我尝试时 它说,标识符" print"未定义..我确定我正在做某事 超级错误,所以任何指针都会非常感激:)。

此外,我尝试尽可能简单,没有指针或地址^^

#include "stdafx.h"
#include "iostream"

using namespace std;


int A[3][5];

class Matrix {
public:
Matrix() {
    A[0][1] = 5;
    A[1][2] = 3;
    A[2][1] = 2;
    A[3][4] = 10;   
}
void printArray(int height, int width);
};

int main()
{
printArray(A[3][5]);


return 0;
}

void Matrix::printArray(int width, int height) {
for (int i = 0; i < width ; i++) {
    for (int y = 0; y < height; y++) {
        cout << A[i][y] << " ";
    }
    cout << endl;
    }
}

4 个答案:

答案 0 :(得分:3)

printArray是类的成员函数。所以你需要一个类的实例来调用它。

Matrix m;
m.printArray(3, 5);

答案 1 :(得分:0)

是的,正如它所说的那样,在main()你试图调用其他地方没有提及的函数print。另外,即使它是,它可能会触发UB,因为你正试图用它的一个未存在的元素调用它到它的西北角的西北角(如果你只是指阵列本身,你不需要指定其维度,因为在表达式上下文中,方括号[]表示元素索引,而不是数组维度。

你的printArray接受两个参数,但是你用一个数组(非)元素作为参数来调用它。在您的情况下,它应该是printArray(3, 5);

答案 2 :(得分:0)

main()内,尝试:

int main()
{
   Matrix a;
   a.printArray(3, 5);
   return 0;
}

我相信这段代码可以有更好的设计。另外,请检查A[3][4]。在这种情况下,您的行索引不应超过2。

答案 3 :(得分:0)

有一些问题:

  1. 您正在调用一个不存在的方法:print - 这就是错误的原因。

  2. 但是,如果您打算致电printArray,您必须要小心,因为它有2个参数,而不是一个(也是不同类型)。您发送的bidimensional array of type intprintArray应该会收到int类型的2个参数。

  3. 调用类的方法应该首先通过创建该类的对象来完成,然后通过该对象调用该方法。

  4. 如果您想在不创建对象的情况下调用它,则应使用关键字static - 阅读here

  5. 我可以直接给你答案,但如果你从here读到,我认为它会对你有所帮助。知道如何宣布课程并不是一切。您还需要学习如何使用它。