黑马程序员技术交流社区
标题:
结构体补齐算法是什么意思
[打印本页]
作者:
LuciferTJD
时间:
2015-4-6 14:54
标题:
结构体补齐算法是什么意思
代码中有一个名称为结构体补齐算法
#include <stdio.h>
int main()
{
char c = 'A';
int a = 10;
printf("a=%p\n", &a);
printf("c=%p\n", &c);
/*
struct Student
{
int age;// 4
int score;// 4
char *name;//8
};
struct Student stus[3];
printf("%ld\n", sizeof(stus));*/
return 0;
}
复制代码
这个代码是要表示什么知识点呢?
作者:
wupeng756
时间:
2015-4-6 16:38
结构体里 每个变量的大小都不一样,但是在存储的时候 都是按最大的分配空间,比如上面的例子,一个结构体的大小不是4+4+8=16 而是8+8+8 = 24 不信你写代码测测
作者:
梦想中前行
时间:
2015-4-6 21:21
结构体Student里边三个不同类型的成员,这三个成员的字节数不一样,是4,4,8.但是系统会在输出时,按最大字节的成员的倍数来分配。所以就变成了8,8,8。是系统为了方便计算。
作者:
LuciferTJD
时间:
2015-4-6 22:16
wupeng756 发表于 2015-4-6 16:38
结构体里 每个变量的大小都不一样,但是在存储的时候 都是按最大的分配空间,比如上面的例子,一个结构体的 ...
但是输出时stus长度为什么是48呢,如果把[3]去掉,也只是16,只是4+4+8=16,所以不知道怎么回事
作者:
longer057
时间:
2015-4-6 23:08
搜迪斯奈,这么高大上,就是字节数码
作者:
oucding
时间:
2015-4-7 15:06
这个你可以百度一下,有很多详细说明的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2