sizeof(struct)说明
struct结构体中,对于对齐方式,首先以遇到的第一个类型对齐,之后以第二个类型对齐,之后依次,但遇到最大类型后,后面的全部以最大类型对齐。
系统如64位系统,则最大为8个字节。实例:
printf("char字节为:%d
",sizeof(char)); //1
printf("short字节为:%d
",sizeof(short)); //2
printf("int字节为:%d
",sizeof(int)); //4
struct MyStruct7{
char a;
short b;
int c;
char d;
}t7; //sizeof(t7) ///此为1个字节,没有遇到更大的
struct MyStruct6{
char a;
short b;
int c;
char d;
}t6;
printf("%d
",sizeof(t6)); //为12
首先char占据一个字节,之后遇到short 2B,则此时2B较大,故以2B补齐,此时a占2B,b占2B,遇到第三个c,4B,此时正好占满8B。
之后d为1B,但此时最大的为4B,必须补齐,故此时为12
char
str[]="Tencent";
sizeof(str)为8 Tencent ’,所以长度为8
har* ch
sizeof(ch)其为指针,如果为win32,则为4
下面为参考善于总结的博客上,各个字节的大小;网址:http://blog.csdn.net/lyl0625/article/details/7350045
C语言中,各类型所占的字节数与机器字长及编译器有关系:
| 编译器类型 | 类型 | 占的字节数 |
| 16位编译器 | char | 1B |
| char *(指针变量) | 2B | |
| short int | 2B | |
| int | 2B | |
| unsigned int | 2B | |
| float | 4B | |
| double | 8 | |
| long | 4 | |
| long long | 8 | |
| unsigned long | 4 | |
| 32位编译器 | char |
1 |
| char*(指针变量) | 4B(32位的寻址空间) | |
| short int | 2 | |
| int | 4 | |
| unsigned int | 4 | |
| float | 4 | |
| double | 8 | |
| long |
4 |
|
| long long | 8 | |
| ungigned long | 4 | |
| 64位编译器 |
char |
1 |
| char*(指针变量) | 8 | |
| short int | 2 | |
| int | 4 | |
| unsigned int | 4 | |
| float | 4 | |
| double | 8 | |
| long |
8 |
|
| long long | 8 | |
| unsigned long | 8 |
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: $.post和String转流时引起乱码及解决办法
- 下一篇:没有了
