12)结构体
- 结构体对齐--->实际上就是,拿空间换时间的, 整齐的对齐,可以访问内存比较省时间,按照规律或者倍数访问内存,肯定是省时间的
- 上面的结构体对齐,,主要是应对面试题
- 结构体内容更主要涉及:
- 结构体类型定义
- 结构体变量定义
- 结构体变量的初始化
- typedef改类型名字
- 点运算符和指针法操作结构体
- 结构体也是一种数据类型,复合类型,自定义类型
- 结构体类型的定义:
1 //struct 是关键字 2 //struct teacher(这个teacher是一个随便起的名字) 合在一起才是类型 3 4 //{} 后面有分号 5 6 struct Teacher 7 { 8 char name[50]; 9 int age; 10 11 }
- 结构体变量的定义
1 //1.先定义类型,再定义变量(常用) 2 3 struct teacher t1; //全局变量 4 5 int main() 6 { 7 struct teacher t2; //局部变量 8 9 } 10 11 12 //2.定义类型,同时定义变量 13 struct teacher 14 { 15 16 }t1,t2; 17 //这个t1和t2,就是变量 这个t1和t2是全局变量?
- 结构体变量的初始化
1 //1.定义变量时,直接初始化 2 struct teacher t7={‘dasdsa’,10}; 3 4 //2.或者这样: 5 struct teacher 6 { 7 char name【50】; 8 int age; 9 10 }t1={”fadsf“,30}; 11 12 //3.或者 13 int main() 14 { 15 struct teacher t1.name=”“djasfds”; 16 t1.age=10; 17 }
- 为啥还可以这样: strcpy(t1.name,"wnagadhk") -->那个不是结构体变量的名字吗
- 结构体只是一个类型,还没有分配空间,只有根据类型,定义变量,采分配空间,有了空间才能赋值
- 结构体变量内容之间的拷贝-------------------------相同类型的两个变量可以相互赋值
1 //只有结构体里面的内容一样,才可以互相赋值 2 3 //比如 4 struct student 5 { 6 int a; 7 }; 8 9 10 struct teacher 11 { 12 int b; 13 }; 14 15 这样不可以赋值
1 struct student 2 { 3 int a; 4 }; 5 6 int main() 7 { 8 struct student st1.a=10; 9 struct student st2=st1; 10 11 12 //这个就可以 13 }
把st1类型的变量内存的值拷贝给st2成员变量的内存 这个st1和st2没有半毛钱关系