黑马程序员——C语言基础08—结构体/枚举

时间:2021-12-19 00:23:08

——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开始。
枚举类型应用于当一个变量只允许有固定几个取值时。