搜索

怎么比较两个结构体是否相等?

发布网友 发布时间:2022-04-24 13:45

我来回答

3个回答

热心网友 时间:2023-10-15 00:03

你是要比较两个结构体实例里面的元素?
还是说看看两个标识符是否表示同一个实例?

1,元素的话,一个个比咯:if(p1->age==p2->age)...有一个元素不等,即是两个实例不相等!没什么效率高的方法吧!

2,指针直接比较,如果保存的是同一个实例地址,则(p1==p2)为真!

热心网友 时间:2023-10-15 00:04

如果可以确定该结构体内没有做内存填充的话,用memcmp做内存比较效率最高

热心网友 时间:2023-10-15 00:04

用memcmp比较:int memcmp(const void *buf1, const void *buf2, unsigned int count);

当buf1<buf2时,返回值小于0

当buf1==buf2时,返回值=0

当buf1>buf2时,返回值大于0

struct CmpTest
{
    char    a;
    short    b;
    int    c;
}t1,t2;

memset(&t1, 0, sizeof(CmpTest));
memset(&t2, 0, sizeof(CmpTest));

int result =  memcmp(&t1, &t2, sizeof(CmpTest));

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top