面试题:两个相同struct的变量能否用memcmp比较?
来源:互联网 发布:android完整项目源码 编辑:程序博客网 时间:2024/05/23 20:49
面试的时候,考官问了RT的题目,觉得这题问得比较有水平,所以把它写出来分享。
大家知道,结构体里面的变量,如果有的是char型,有的是int型,有的是long型,有的是short型,也有的是未分配的地址等等。
想看如下代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct{
char a;
int b;
}test_struct_t;
int
main(int argc, char *argv[])
{
test_struct_t A,B;
A.a = 0;
A.b = 0;test_struct_t B;
memset(&B,'\0',sizeof(B));
if( 0 == memcpy(&A,&B,sizeof(A))){
printf("struct A is euqal struct B");
} else{
printf("struct A is uneuqal with struct B");
}
return 0;
}
有开发经验的,马上就能说出truct A is uneuqal with struct B,原因就是结构体的字节问题。
A 只对char a清零,根据自然对齐原则,但是后面三个字节的内容是随机任意的。而B,是对整个内存区域都清零了,所以两者大部分情况下都不会相等的,
所以,得出结论,结构体不能用memcpy函数比较!
0 0
- 面试题:两个相同struct的变量能否用memcmp比较?
- 面试题:两个相同struct的变量能否用memcmp比较?
- memcmp比较两个struct是否相等
- 【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别
- 面试题:两个变量的最大值、最小值和变量交换
- Java面试题 两个String如何比较是否相等的
- 面试题→交换两个变量的值
- 面试题 :实现两个整数变量的交换
- 交换两个变量的值 - 经典面试题
- 交换两个变量的四种方案(面试题)
- memcmp比较两个C风格字符串
- strcmp和memcmp两个字符串比较函数
- java 反射比较两个类型相同的对象 内部的变量是否相等
- 面试题:比较两个集合是否相等?
- 雅虎面试题─将两个双向循环链表中data值相同的结点删除
- 求职面试题(两个字符串是否包含相同的字符)
- C/C++面试题(1):交换两个相同大小的整型数组
- 腾讯面试题:50个人至少有两个人生日相同的概率
- Web前端开发十日谈
- 数值温度传感器18b20驱动分析
- Java
- IOS-多维数组插入数组到最前面
- Google Dense Hashmap和Sparse HashMap
- 面试题:两个相同struct的变量能否用memcmp比较?
- 2~100之间的两个数,把和告诉A,把积告诉B
- 垃圾清理势在必行——java垃圾收集算法
- CMAKE 编译 PCL库的kinfu
- Block 3:__block说明符
- aclocal安装依赖的库
- 理解和使用NT驱动程序的执行上下文
- OCP-1Z0-051 第17题 null参与运算后仍是null
- 基于HttpClient4.3实现的Http后台请求