C++中的浮点数组

9wbgstp7  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(145)

我有一个存储在浮点数组中的矩阵,我需要将一个矩阵的一行交换到另一个矩阵中。
这就是我到目前为止所做的。矩阵m和m_new是矩阵类,其中,‘float* m = new float(N*N)’是类变量‘m’。我做了一个指向矩阵中需要交换的那一行的指针,我使用memcpy作为行的大小,'N',将'm'的那一部分放入'm_new'中。然而,m_new的值没有改变,我很困惑为什么。

for (int variable : partition) {
    float* m_pt = m->m + (variable * N * sizeof(float));
    float* m_new_pt = m_new->m + (row * N * sizeof(float));
    memcpy(&m_new_pt, &m_pt, N*(sizeof(float)));
}
5kgi1eie

5kgi1eie1#

要解决此问题,您应该删除memcpy函数中的&运算符。m_new_ptm_pt已经是指针,所以它们已经包含地址。通过使用&运算符,您传递的是指针的地址,而不是数据的地址。Memcpy复制地址本身,而不是它们背后的数据。

for (int variable : partition) {
    float* m_pt = m->m + (variable * N);
    float* m_new_pt = m_new->m + (row * N);
    memcpy(m_new_pt, m_pt, N * sizeof(float));
}

相关问题