我有一个存储在浮点数组中的矩阵,我需要将一个矩阵的一行交换到另一个矩阵中。
这就是我到目前为止所做的。矩阵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)));
}
1条答案
按热度按时间5kgi1eie1#
要解决此问题,您应该删除
memcpy
函数中的&
运算符。m_new_pt
和m_pt
已经是指针,所以它们已经包含地址。通过使用&
运算符,您传递的是指针的地址,而不是数据的地址。Memcpy复制地址本身,而不是它们背后的数据。