12)结构体

  1. 结构体对齐--->实际上就是,拿空间换时间的, 整齐的对齐,可以访问内存比较省时间,按照规律或者倍数访问内存,肯定是省时间的
  2. 上面的结构体对齐,,主要是应对面试题
  3. 结构体内容更主要涉及:
      1.   结构体类型定义
      2.        结构体变量定义
      3.        结构体变量的初始化
      4.        typedef改类型名字
      5.        点运算符和指针法操作结构体
      6.        结构体也是一种数据类型,复合类型,自定义类型
  4.   结构体类型的定义:
     1 //struct 是关键字
     2 //struct teacher(这个teacher是一个随便起的名字) 合在一起才是类型
     3 
     4 //{}  后面有分号
     5 
     6 struct   Teacher
     7 {
     8   char  name[50];
     9   int age;    
    10 
    11 }
  5. 结构体变量的定义
     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是全局变量?
  6. 结构体变量的初始化
     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=1017 }
  7. 为啥还可以这样:  strcpy(t1.name,"wnagadhk")     -->那个不是结构体变量的名字吗
  8. 结构体只是一个类型,还没有分配空间,只有根据类型,定义变量,采分配空间,有了空间才能赋值
  9. 结构体变量内容之间的拷贝-------------------------相同类型的两个变量可以相互赋值
     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没有半毛钱关系

原文地址:https://www.cnblogs.com/xiaoyoucai/p/8177199.html