主要内容:结构体(很重要,掌握)

一、结构体的声明

结构体是一种比较灵活的数据类型,与oc药学的类很相似

结构体是一种自己定义的数据类型示例

struct  结构体名struct  student // 定义一个学生类型

{{

类型说明符  成员名;char name;// 姓名变量

... ...char sex;// 性别变量

类型说明符  成员名;float  core;// 分数变量

};}

由结构体类型修饰的变量,叫结构体变量

定义:struct   结构体名  变量名  =  { 初值 };

示例:struct  student  stu = { " 张平辉 ",  ' m ',  98.5 };

想访问结构体成员:结构体变量名 . 成员变量名

如:stu . name  / / 输出得到得到姓名

注意:结构体成员变量与普通变量一样,可直接赋值

示例:

student  stu2 = {};

stu2 = stu1;/ / 把结构体变量stu1的值赋值给stu2

可以通过把数组放在结构体内实现数组的直接赋值(数组不可以直接赋值)

二、匿名结构体

 为现有的类型创建一个类型别名(通俗的讲就是为现有类型创建一个其它的名字)

语法:typedef  原类型名  新类型名

示例:

typedef  int Integer;

Integer  a = 10;/ / 等同于 int a = 10;

使用typedef定义结构体

struct student {typedef struct  {

char name[20] ;等同于 char name[20] ;

char sex;char sex;

float score;float score;

};} Student

typedef struct student  Student;Student stu1 = {"张平辉", 'm' 98};

Student stu1 = {"张平辉", 'm' 98};Student stu2 = {"赵文龙", 'm',99};

Student stu2 = {"赵文龙", 'm',99};

结构体数组

将多个结构体变量放到数组中,构成结构体数组

Student stu [ ] = {stu1, stu2};

通过下标访问结构体数组

stu[1].name

三、结构体嵌套

结构体的成员依然可以是结构体

示例:

typedef struct date {

int year;

int month;

int day;

} MyDate;

struct student {

char  name[];

MyDate birthday;

} / / 访问:stu1.birthday.year

结构体和数组的相互嵌套可以实现比较复杂的数据结构

四、结构体内存占用

以最大成员变量类型所占空间为分配单位,按结构体成员声明顺序自上而下分配

分配空间不足时以存储成员变量时,分配新的空间