直到最近,我只看到使用memcpy()
. 在课程和在线说明中,将一个结构的内容复制到另一个结构中通常看起来像
struct block *b0 = malloc(sizeof(struct block));
struct block *b1 = malloc(sizeof(struct block));
/* populate fields in *b0 */
memcpy(b1, b0, sizeof *b1); /* copy contents of b0 into b1 */
/* free b0, b1 */
但是,此任务也可以通过替换memcpy()
.
*b1 = *b0; /* dereferenced struct assignment */
是否有充分的理由为什么它没有被广泛使用(至少在我有限的经验中)?这两种方法——赋值和——memcpy()
是等价的,还是有一些令人信服的理由可以memcpy()
普遍使用?