今天首先复习了指针与二维数组,然后学习了结构体
1.概念
结构体是一种数据类型,但c语言中并没与提供这种现成的数据类型,需要我们在使用时,根据续期自己去定义。声明一个结构体的一般形式如下:
struct 结构体名
{
成员类型 成员名1;
成员类型 成员名2;
....
};
注意:一定不要忘了结尾花括号后的分号
2.定义结构体类型的变量
当定义了一个结构体后,就可以定义结构体类型的变量了
一般定义形式如下:struct student s:前两个是结构体类型名,后面接着变量名
3.结构体变量的引用
(1)结构体变量名.成员名 其中.是结构体成员运算符,表示“的”的意思
(2)结构体变量的地址->成员名 其中->是指向结构体成员的运算符,一般当前面是结构体变量的地址时可以使用。
4.结构体数组
一个结构体变量可以存放一组数据(如一个学生的姓名,学号,成绩等),当有十个学生的数据需要参与运算,这时就可以用数组。这就是结构体数组。与结构体变量的定义类似:struct student a[10];这时a数组中就有三个struct student类型的数据,初始化参考普通数组;
5.指向结构体数据的指针
在定义一个函数需要调用一个结构体的数据时,因为结构体的特性,其中的数据一般都很大,如果直接传数据,程序运行的效率就满了,但是用指针的话就不用,直接将结构体变量的地址传递过去即可。
同样,咋定义一个指向结构体变量的指针时的一般形式为:struct student *p;
这时我们对结构体成员的调用方式有以下几种:
(1)结构体变量.成员名
(2)(*p).成员名
(3) p->成员名
6.结构体的对齐规则
1.在32位平台上,默认都是按4字节对齐的
2.对于各成员变量,在各自的自然边界上对齐,
3,如果成员变量中有比4字节大的,此时整个结构体按照4字节对齐,
4,如果成员变量中没有比4字节大的,此时整个结构体按最大的那个成员对齐
注意:如果在64位系统中,默认是8字节对齐。