c++ - 为什么这个打印内存地址而不是值

标签 c++ arrays matrix-multiplication

这是我的司机

int square[2][2] = {
    {1,2},
    {3,4}
};

matrixMulti(square, 2);

这是我的功能

void matrixMulti(const int a[][2], const int rows) {

    int b[2][2];

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 2; k++) {
                b[i][j] += a[i][k] * a[k][j];
            }
        }
    }

    cout << "new matrix " << endl;
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            cout << b[i][j] << " ";
        }
        cout << endl;
    }
}

输出是:

new matrix
-858993453 -858993450
-858993445 -858993438

我很困惑为什么它打印内存地址而不是存储在其中的值,以及如何让它打印值而不是内存地址。

最佳答案

你写道:

int b[2][2];

然后

b[i][j] += ...

你在哪里初始化 b ?

int b[2][2] = {};

int b[2][2] = {0,0};

应该完成这项工作。

关于c++ - 为什么这个打印内存地址而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58632504/

相关文章:

c++ - 创建动态字符串数组 C++

javascript - 创建键值 JavaScript 值

Javascript - 将值插入数组返回未定义

python - 使用 Numpy 进行矩阵乘法

c# - 获取两个两个变换矩阵之间的旋转矩阵(XNA)

C++ 派生类无法正常运行

c++ - 重新分配给尚未准备好的 future 时会发生什么

c++ - 在 ring0/kernel 中列出驱动程序?

c++ - QSqlDatabase 是 exec 阻塞吗?

algorithm - 实现施特拉森矩阵乘法算法的问题