我刚刚在工作中遇到了另一个代码库,其中开发人员在复制/比较/设置时始终使用结构的第一个元素的地址,而不是结构本身。这是一个简单的例子。
首先有一个结构类型:
typedef struct {
int a;
int b;
} foo_t;
然后有一个函数可以复制这样一个结构:
void bar(foo_t *inp)
{
foo_t l;
...
memcpy(&l.a, &inp->a, sizeof(foo_t));
...
}
我自己不会以memcpy
这种方式编写调用,我开始怀疑原始开发人员根本没有完全掌握 C 中的指针和结构。但是,现在我在两个不相关的代码库中看到了这一点,没有普通开发人员,所以我开始怀疑自己。
为什么要使用这种风格?