结构内的成员之间是否连续,相邻的成员的地址的差是否等于对应的成员的sizeof???
不同的成员变量组合,结构的sizeof如何,是否正好等于全部成员的sizeof之和?
no, 不同的数据类型间,地址不完全连续,而且结构的sizeof也不等于各个成员数据类型相加,结构会稍大些;而相同的数据类型是则地址连续且结构数据大小等于各个相同成员数据大小之和;
struct student
{
char name[5];
char gender;
int age;
float height;
};
struct student s1 = {
"lucly", 'M', 23, 170.1f
};
按上面的代码定义数组感觉,每次都要写struct,好麻烦哦,所以这样定义也许更好:
typedef struct studentProperty
{
char name[5];
char gender;
int age;
float height;
}student;
//so we can define a variable of struct student like:
student s1;
// just like typedef int key, key represent int property
union
#include <stdio.h>
typedef union
{
int i;
char ch[sizeof(int)];
}CHI;
int main(int argc, const char *argv[])
{
CHI chi;
int i;
chi.i = 4321; // 10E1
for (i = 0; i < sizeof(int); i++)
{
printf("%02hhX", chi.ch[i]);
}
printf("\n");
return 0;
}
运行结果:FF E1 10 0000 // chi.i = (4321)D ---> (10E1)H
这就涉及到现在的cpu大部分是x86的,而我们一般电脑存储数据是小端,即E1在前,10在后;