——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、结构体
1. 定义:由不同类型数据组成的组合型的数据结构,他称为结构体。
一般形式:struct 结构体名{
成员列表
}
如:struct Student{
int num;
char name[20];
char sex;
int age;
struct Date birthday; //birthday 属于 struct Date类型
}
struct Date{
int month;
int day;
int year;
}
3.定义结构体类型变量
1)先定义结构,再说明结构变量:
例如: struct Student {
int num;
int age;
char sex;
}
stu1={“1”,”23”,”man”};
2)定义的同时进行说明结构变量
struct Student {
int num;
int age;
char sex;
}stu1,stu2,stu3;
3)
直接定义结构体类型变量,省略类型名(使用匿名)
struct {
char *name;
intage;
} pep;
4.结构体成员的访问
stu1.name ;
stu1.score;
5.结构体的初始化
struct Student stu1={2,"tom",95};
struct Student stu1={.num=4 ,.name="Jack",.score=100};
结构体变量的存储:所占字节数为最大内存成员字节的倍数。
定义结构体类型,只是说明了该类型的组成情况,并没有给它分配存储空间,就像系统不为int类型本身分配空间一样。只有当定义属于结构体类型的变量时,系统才会分配存储空间给该变量。
6.结构体数组的定义:
struct People{
char *name;
int age;
};
struct People pep[5]; //定义1
struct People {
char *name;
int age;
} pep[5]; //定义2
struct {
char *name;
int age;
} pep[5]; //定义3
结构体数组的初始化;
struct {
char *name;
int age;
} pep[2] = { {"xiaoming", 27},{"kevin", 30} };
注意:在部分赋值时,若将字符串的内容赋给变量的话,另格式如下:
struct Student {
int num;
char *name;
int scoe;
}stu[3];
struct Stusent stu[2]
strpy(stu[2].name,”zhangsan”);
stu[2].score = 100;
结构体数组的遍历
printf(“name:%s,age:%d,score:%d\n,stu[2].name,stu[2].age,stu[2].score);
7.结构体指针
用来存放结构体变量地址的指针变量。
该指针即可指向结构体变量,也可以指向结构体数组中的元素。
struct Student *pt
用指针遍历结构体变量的成员。
Printf(“序号 %d,姓名,%s,score:%d”,(*p).num,(*p)name,(*p))score;
如果P指向一个结构体变量stu,以下三种方法等;
1)stu.num
2)(*p)成员名
3)p->num)
8.指向结构体数组的指针:
可以用指针变量指向结构体数组的元素。
二、枚举
1、定义枚举类型
enum Season{spring,summer,autumn,winter};
2、定义枚举变量
enum Season s;
枚举元素的每一元素都被默认赋值了一个整数,从0开始。
枚举类型应用于当一个变量只允许有固定几个取值时。