C++ C++;通过函数打印出2D阵列

C++ C++;通过函数打印出2D阵列,c++,windows,c++11,C++,Windows,C++11,所以我试图通过一个 函数调用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;

所以我试图通过一个 函数调用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;
    }
}
#包括“stdafx.h”
#包括“iostream”
使用名称空间std;
INTA[3][5];
类矩阵{
公众:
矩阵(){
A[0][1]=5;
A[1][2]=3;
A[2][1]=2;
A[3][4]=10;
}
void printary(整数高度、整数宽度);
};
int main()
{
打印阵列(A[3][5]);
返回0;
}
void矩阵::printArray(整数宽度、整数高度){
对于(int i=0;icout是的,正如它所说,在您的
main()
中,您试图调用其他地方没有提到的函数
print
。此外,即使它是,它也可能会触发UB,因为您正试图用数组中不存在的元素调用它,在它的西北角(如果您只是指数组本身,则不需要指定其维度,因为在表达式上下文中,方括号
[]
表示元素索引,而不是数组维度)


您的
printary
接受两个参数,但您使用单个数组(非)元素作为参数调用它。在您的示例中,它应该是
printary(3,5);
printary
是类的成员函数。因此您需要类的实例来调用它

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

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

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

存在一些问题:

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

  • 不过,如果您打算调用
    printary
    ,您必须小心,因为它有两个参数,而不是一个(也是不同类型的)。您发送的是int类型的
    二维数组,而
    printary
    应该接收两个int类型的参数

  • 调用类的方法应该首先创建该类的对象,然后通过该对象调用该方法

  • 如果您想在不创建对象的情况下调用它,应该使用关键字
    static
    -了解它


  • 我可以给你一个直接的答案,但我认为如果你阅读的话会对你有更大的帮助。知道如何声明一个类并不是万能的。你还需要学习如何使用它。

    以及idenitifier print是在哪里声明的?你是指printary吗?在任何情况下,这个调用print(a[3][5])没有意义。是的,我指的是printArray,但当我更改它时,它仍然是相同的。如果我正确命名它,printArray仍然表示它的未定义与参数声明和提供的参数相比。
    printArray()
    是类
    Matrix
    的一个方法。要调用此方法,您需要所述类的一个实例。
    int a[3][5];
    为索引0…2和0…4保留内存。访问
    a[3][3]
    是未定义的行为。任何情况都可能发生。
    a[1][5]也是如此
    .ooh..是的,我忘了,哈哈,非常感谢!:D
    应该是printary(3,5)
    不是真的,你需要一个
    矩阵
    实例
    矩阵
    ?你是说其默认构造函数只在全局对象中存储一些值的类?是的,类
    printary
    属于是的,谢谢你指出这一点..没有注意:)