memcpy就是传址复制,通过指针的形式来进行内容复制。
memmove就是传址移动,通过指针的形式来进行内容传递,
结构体的大小:
定义结构体的内容时尽量让char这种字节最少的在前面,long long int这种字节最多的在最后面,这样可以节省空间。
32位机器默认对齐数时4;64位机器默认对齐数时8.
对齐时的对齐数取自己的字节大小和默认对齐数取更小值。
每次开始时的地址必须是自己对齐数的倍数,结构体的大小必须是所有包含的内容的公倍数。
struct A
{
int a; a的对齐数是4,开始地址是0;
short b; b的对齐数是2,开始地址是4;
int c; c的对齐数是4,开始地址是8;
char d; d的对齐数是1,开始地址是12;
};
结构体的大小你认为是13吗?错,大小是16,因为结构体的大小必须是a,b,c,d这四个数的对齐数的公倍数。
struct B
{
int a; a的对齐数是4,开始地址是0;
short b; b的对齐数是2,开始地址是4;
char c; c的对齐数是1,开始地址是6;
int d; d的对齐数是4,开始地址是8;
};
结构体大小是12.