一、结构体
1.结构体变量的定义
* 结构体可以由多个不同类型的数据构成
* struct Person {int age; double height; char *name}; //先定义结构体类型,该结构体有三个成员或者属性
* struct Person p = {18, 1.80, "jack"}; //再根据结构体类型定义变量,并进行初始化
2.结构体变量属性的赋值
1>变量属性赋值1
struct Person p = {18, 1.80, "jack"};
//属性的修改
p.age = 20;
p.height = 1.78;
p.name = "rose";
p = {19, 1.77, "jame"};// 错误赋值方式,只能在定义变量是进行初始化
2> 结构体变量赋值2
struct Person p2 = {.age =19 ; .height =176 ; .name ="tom" };
3.结构体内存分析
1> struct Date {int year ;int month; int day} ;//本行代码只是定义了一个结构体类型,并未分配存储空间
2> struct Date d1 = {2011,4,10};//定义结构体变量(真正分配存储空间),结构体变量的存储空间就是它所有变量的和(只限于结构体内所有变量类型相同的情况)--12个字节,可以用sizeof(d)检测
3> struct Student {int age; char *name};
struct Student stu = {18, "jary"};// 此时结构体变量占用16个字节。因为当结构体变量是不同类型的数据时,存储空间为最大类型数据字节的倍数
4.结构体变量的多种定义方式
1> struct Person {int age; double height; char *name};
struct Person p = {18, 1.80, "jack"};
2> struct Person {int age; double height; char *name} p1;//定义结构体的同时定义了变量
struct Person {int age; double height; char *name} p2;//错误写法,结构体类型重复定义
3> struct {int age; double height; char *name} p3;//缺点:不能重复定义变量
5.结构体作用域
* 结构体类型也有作用域,从定义类型的那一行开始,一直到代码块结束
* 可以对比全局变量和局部变量,进行定义和使用
6.结构体数组
1>结构体数组定义
struct Person {int age; double height; char *name};
struct Person names[3] = { {18, 1.80, "jack"}, {18, 1.80, "jame"}, {18, 1.80, "tom"}};
7.指向结构体的指针
1> 指针的定义
struct Person {int age; double height; char *name};//定义类型
struct Person p1 = {18, 1.80, "jack"};//定义结构体变量
struct Person *p; //定义了struct Person类型的指针
p = &p1;//指针变量p指向了p1变量
2> 访问结构体变量属性的方式
① p1.age; p1.height;p1.name; //利用变量名直接访问
② (*p).age; (*p).height; (*p).name; //利用指针访问
③ p->age; p->height; p->name; //利用指针箭头
8.结构体嵌套
1> struct Date {int year ;int month; int day};
struct Student {int age; double height; struct Date birthday};//结构体嵌套定义
struct Student stu = {18,188,{1996,9,9}};
二、数据类型总结
1.基本数据类型
1> int
①long int、long:8个字节 %ld
②short int、short:2个字节 %d、 %i
③unsigned int、unsigned:4个字节%d、%i
④signed int、signed:4个字节%d、%i
2> float/double
①float:4个字节 %f
②double:8个字节 %f
3>char
①1个字节 %c、%d
②char类型保存在内存中的是它的ASCII值;'A'-->65
2.构造类型
1>数组:只能存储同一种类型的数据
定义:数据类型 数组名[元素个数]
2>结构体:可以由多个不同的类型数据组成
定义:先定义类型 再利用类型定义变量
3.指针类型
1> 变量的定义:int *p;
2> 间接操作变量的值,int a = 10;int *p;p = &a;*p = 20;
4.枚举类型
1> 使用场合:当一个变量的取值,只有几个固定取值时