NDK启航篇——C语言基础(结构体)
今天来写一下结构体
什么是结构体?
- 结构体是一种构造数据类型
把不同的数据类型整合起来成为一个自定义的数据类型
- 与Java中的类相似
- 是C中最复杂的数据类型
结构体的初始化方式
//尖括号代表系统类库,std表示标准,io表示输入输出 引入标准输入输出 #include<stdio.h> //lib表示类库 引入标准类库 #include<stdlib.h> struct Man{ char* name; int age; int (*func)(); }; void main(){ //初始化结构体的变量 //①声明的同时进行赋值 struct Man m = {"TOM",21}; //②先声明 struct Man m1 ; //声明之后赋值 m1.age = 20; m1.name = "JERRY"; printf("%s,%dn",m1.name,m1.age); getchar(); }
结构体的写法
- struct 名字 { ··· };
- struct 名字 { ··· }m1,m2("TOM",10);//结构体变量名
- struct 名字 { ··· }名字; //取别名 typedef int Age;
- 匿名结构体
作用:控制结构体变量的个数,相当于单例
struct{ char name[10]; int age; }m1,m2;
struct Teacher{ char name [10]; }; struct Student{ char name [20]; int age; struct Teacher t; }; void main(){ struct Student s = {"TOM",10,{"JERRY"}}; struct Student s1; s1.age = 10; strcpy(s1.t.name,"JERRY"); getchar(); };
什么是结构体指针
struct Man { char name[20]; int age; }; void main (){ struct Man m1 = {"TOM",10}; struct Man *p = &m1; printf("%s,%dn",m1.name ,m1.age); printf("%s,%dn",(*p).name ,(*p).age); //"->"是"(*p)."的简写 printf("%s,%dn",p -> name ,p -> age); getchar(); };
什么是结构体指针数组
struct Man { char name[20]; int age; }; void main (){ struct Man mans[] = {("TOM",10),("TOM",10)}; //遍历数组① struct Man *p = mans; for(;p<names +2;p++){ printf("%s,%dn",p -> name ,p -> age); } ② int i = 0; for(;i<2;i++){ printf("%s%dn",mans[i].name,mans[i].age); } struct Man *p = &m1; printf("%s,%dn",m1.name ,m1.age); printf("%s,%dn",(*p).name ,(*p).age); //"->"是"(*p)."的简写 printf("%s,%dn",p -> name ,p -> age); getchar(); };
结构体大小(字节对齐)
- 结构体变量的大小按最大的分配
必须是最宽基本数据类型的整数倍
- 提升读取效率
struct Man{ int age; double weight; }; void main(){ struct Man m1 = {10,20.1}; printf("%d,%#xn",sizeof(m1),&m1); getchar(); }
结构体的知识点有点多但其实并不难
,今天就先写到这里明天进续写结构体
剩下的东西,欲速则不达,慢慢来不着急。