1.字节对齐问题
1,基本数据类型的自身对齐值:
1字节:char型
2字节:short型
4字节:int,float类型
8字节:doublel类型
2、程序的指定对齐值:即#pragma pack(value)时的指定对齐值value
3、自定义类型的自身对齐值:结构体或类的成员中自身对齐值最大的值
4、自定义类型的有效对齐值:自定义类型的自身对齐值和指定对齐值中较小的值
据此,我们就可以很方便的来讨论具体数据结构的成员和其自身的对齐方式。
#pragma pack(4)
Struct test
{
Char a;
Short b;
Char c;
};
上述结构体S的自身对齐值为2(b的自身对齐值),而指定对齐值为4(32位编译器默认值),故最终的有效对齐值为2.
2.strlen(),sizeof()
strlen()求的是长度,针对的是字符串;sizeof()求的是大小,针对的是类型;
strlen()是函数,sizeof的本质是关键字;
strlen()遇到\0结束;sizeof()则不同;
例如:char str[]={'h','e','l','\0','l'};
strlen(str)=3;sizeof(str)=6;