- 论坛徽章:
- 0
|
memcpy实际上就是memory copy,也就是复制内存的内容
memcpy(&length, p, sizeof(short));
复制的目标由第一个参数指示
复制的源由第二个参数指示
复制的字结束的多少有第三个参数指示
VARCHAR
实际相当于
typedef struct
{
short length;
char* buffer;
} VARCHAR;
其中length用于保存buffer所指向的字符串的长度。
假定有一个VARCHAR结构的变量已经正确初始化, 并将其地址赋值给char* 型的变量p;
那么,p->的空间的前两个字节的数据就是VARCHAR类型变量中的长度成员length.
memcpy(&length, p, sizeof(short));
执行的就是从地址p开始,取sizeof(short) == 2字节的空间的数据,复制给&length所引用的内存空间。
然后,你在调整p = p + sizeof(short)就指向了实际的数据,字符串数组下标从0开始到length - 1,
然后
0....length - 1存储的是实际数据。
p[length] = *(p + length) = '' = ' |
|