比较两个内存块之间的值是否相等

标签 c

这是我实现kmean 算法的一部分。我有两个大小相等的内存块,因此 *cluster_center 是当前的集群中心,*new_centroids 代表在对集群点进行平均后的新质心:

double *cluster_center = malloc((k * dim) * sizeof(double));
double *new_centroids = malloc((k * dim) * sizeof(double)); 

我有以下循环将结果从 new_centroids 毫无问题地复制到 cluster_center:

for (int i = 0; i < k; ++i) {
    memcpy(&cluster_center[i * dim], &new_centroids[i * dim], dim * sizeof(double));
}

事实上,我想知道 C 是否有内置函数来比较两个 block 的,因为我想在 *new_centroids*cluster_center 相同(即没有改变)。我真的不知道该怎么做。

谢谢

最佳答案

您要查找的函数是memcmp(内存比较)。执行语句后立即:

memcpy(destination, source, size);

然后

memcmp(destination, source, size);

应该返回零。

关于比较两个内存块之间的值是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39396018/

相关文章:

c++ - 限制用户输入的数字只能保留到小数点后 2 位 C/C++

c - C 中递归的递归

c - 打开并编辑 C 中具有变量名称的外部文件

c - pselect 通知两个管道读端文件描述符,即使只有一个写端被写入

PHP 扩展遍历数组

c - 按位 C 编程

c++ - 快速访问矩阵

C - 访问链接文件中的不完整类型

c - 通过 voidpointer 传递 char* args[]

c - 如何获取 gtk.ListStore 的行数