为什么需要结构体类型?
一种语言本身往往会提供一些最基本的数据类型,比如数字型(int,bigint,float,double等),字符型,日期型,布尔型等。但现实世界中,我们面对的对象总是非常复常,不仅仅是一个数字或一个字符串就能够表达的,所以在现代的语言中,如java,C#等OO的语言,有一个class对象,来封装这些。
举一个简单的场景,如果我们有一个函数,处理的对象是学生对象,则每一次调用都需要把学生的信息全部都传入这个方法,这样非常麻烦,我们就希望有一个对象把它包装起来,每一次只传这个对象即可,结构体就是C语言中完成这个使命的东东。
Struct student
{
const char * sname,
Const char sex,
Int age
};
当你使用的时候,struct student s1 = {"yaoxiaohua",'m',22};
这个时候会发现总是写struct比较麻烦,可以使用typede定义别名。
Typedef struct[ student]{
…} stu;
Stu s1 ={…};
使用typedef的时候,你可以忽略前面给定的名字,即直接 typedef struct {…} alias ;
在定义结构体变量的时候,你需要按照代码中定义的顺序分别赋值,那么在内存中,这些结构体的字段是如何分配的呢?它们是在内存中连续分配的吗?
一般情况一是按顺序分配的,但考虑到字对齐,可能会有些许的gap.