gpt4 book ai didi

比较内容 2D 指针 C

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:37 26 4
gpt4 key购买 nike

我有一个指针指向二维整数数组,维度为 [N][M],其中 M 为偶数。我定义它分配内存如下:

//alocate the memory of indxs pointer containing the indexs of each matrix element 

int **indxs;
indxs = (int**) malloc(N*sizeof(int *));
for(i = 0; i<N; i++){
indxs[i] = (int *) malloc(M*sizeof(int));
}

填充后,我想比较每一行 (i_N) 元素的前半部分 indxs[i_N][:M/2] 是否等于元素的后半部分 indxs[i_N][M/2:]。这个 [:M/2] 是 Python 符号,我不知道如何在 C 中做,有什么建议吗?。我在另一篇文章中读到,要比较两个指针的内容,您必须先取消引用它们:

int *a = something; 
int *b = something;
*a==*b

但是在我的情况下如何做到这一点呢?

最佳答案

首先,这不是一个二维数组,而是一个查找表。

您可以像这样比较查找表中的行:

#include <string.h>

if( memcmp( &indxs[i_N][0],
&indxs[i_N][M/2],
(M/2)*sizeof(indxs[0][0])) == 0 )
{
puts("equal");
}

这很好用,因为每个“行”都指向一个真实的数组。数组 = 在相邻内存中分配了内存单元的东西。

但是,由于您没有二维数组,您将无法在“列”上执行此操作,因为所有行分配都在整个堆上分段。例如,memcmp(indxs[0], indxs[n/2], (n/2)*sizeof(indxs[0][0])) 会崩溃并烧毁。通过使用二维数组来解决这个问题。

关于比较内容 2D 指针 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40422436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com