c语言复习之结构体、联合、枚举(十二)

c语言复习之结构体、联合、枚举(十二)_第1张图片

1.概念定义

1.概念

把同一个对象的不同属性,包装在一起,形成一个结构

2.定义

typedef struct student
{
    unsiged long long stuno;
    char name[20];
    char age;
} student;

2.变量的初始化与访问

1.初始化

student maya={0};//全部初始化为0
maya={.name="dsaf",.age=15,.stuno=2316465456};

2.访问

  1. 普通变量用**.**访问
  2. 指针变量用**->**访问

3.结构体嵌套

//定义一个人的结构,包含姓名,电话,出生日期(年月日)
typedef struct Data
{
    short year;
    short month;
    short day;
}Data;
typedef struct
{
    char name[20];
    unsigned long long tel;
    Data birth;
}person;
//初始化
person maya={"zhangsan",177465489,{1990,5,04}};//年月日外面最好加上花括号
//也可以直接把第一个结构体放入第二个中,去掉typedef

4.面向对象

是一种思想,不是什么语言独有的

  1. 封装:结构体封装
  2. 继承:结构体嵌套
  3. 多态:结构体+指针

5.结构体数组

typedef struct student
{
    int number;
    char name[20];
    char gender[3];
}student;
student stus[49];

6.结构体字节对齐

1.优点

  1. 提高存取数据的速度
  2. 访问特定类型变量要在特定地访问

2.规则

  1. 结构体的大小必须是最宽的基本数据成员的整数倍
  2. 结构体每个成员相当于结构体的首地址的偏移量都是成员大小的整数倍,如果需要,编译器会在成员之间加上填充字节

7.位段

1.概念

在结构体中以位为单位来指定其他成员所占内存长度,这种以位为单位的成员称为位段,利用位段能够用较少的位数存储数据

2.定义

struct Data
{
    整数类型 位段名:位段大小;
    unsigned int year:12;
    unsigned int month:4;
    unsigned int day:5;
}birth;

3.位段各部分解释

1.位段名

即有效的标识符

2.整数类型

c语言标准规定,只有有限的几种数据类型可以用于位段——> 所有的整数类型以及char类型和bool类型

3.位段大小

此位段所占得位数不能超过类型的最大位数

4.注
  1. 不能对位段取地址
  2. 内存排布:先定义的放到高地址,后定义的放到低地址

8.联合

联合成员共享同一个内存位置,联合中所有成员都是从相同的内存地址开始,但是同一时刻只能有一个成员允许含有一个值,小端模式存储

把struct换成union

9.枚举

1.概念

定义符号常量,用一些符号来表示常量,有些变量的取值范围是有限的—–》星期7天,年12月等等

2.定义

enum arr
{
    space;//自动初始化为0,kill为1
    kill;
}
//可以赋值spcace=56,则kill为57

枚举可以赋值给整型变量,反过来也可以

int a=kill;

你可能感兴趣的:(C语言基础知识,c语言,开发语言)