Learning C Struct

为什么需要结构体类型?

一种语言本身往往会提供一些最基本的数据类型,比如数字型(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.

posted on 2015-04-19 21:30  tneduts  阅读(255)  评论(0编辑  收藏  举报

导航