在C语言程序开发中,常常需要将 N 个字节从源内存段 pSrc 拷贝到目的内存段 pDest。稍稍有些经验的程序员一般都会调用C语言标准库函数 memcpy() 或者 memmove(),事实上,大多数程序员都会调用这两个库函数实现需求。
为什么逐项赋值没有memcpy() 快?
为什么逐项赋值没有memcpy() 快?
C语言程序员都是乐于思考的,在调用 memcpy() 函数实现内存拷贝时,往往会思考 memcpy() 函数的实现方式。在一些程序员看来,memcpy() 无非就是下面这样的逐项拷贝:
int i;for(i=0; i
*pDest++ = *pSrc++;
考虑到 memcpy() 函数可以接受任意类型的源内存段指针和目标内存段指针,用C语言来描述就是 memcpy() 函数接收的源内存段指针和目标内存段指针都是 void * 指针,因此可能还要多一步指针类型转换:
可能还要多一步指针类型转换
这里转换为 unsigned char* 指针只仅作为示例,读者当然可以将其转换为其他类型指针。
乐于动手的C语言程序员