zoukankan      html  css  js  c++  java
  • C语言结构体

    结构体

    1、什么是结构体

    基本数据类型:int char float double short long unsigned (一个变量)

    数组:很多个变量 只能保存一种类型的数据

    结构体:也是一种数据类型,这种数据类型,是程序员自己定义。可以包含多种数据类型。

    2、声明结构体

    struct students ------------------->struct students 就是一种数据类型 int char float
    {
    ​  char name[12]; ---------------->结构体的成员“;”结束
    ​  int  number;
    ​  char sex[5];
    };-------------------------------->结构体以“;”结束
    

    struct students 就是一种数据类型 int char float

    Struct 定义结构体的关键字

    Students 结构体名 (自己命名)

    3、结构体变量的声明

    3.1、先声明结构体类型,再定义变量

    Int a;float b;
    
    struct students student1;
    

    结构体变量名也是自己命名的。

    3.2、在声明结构体的同时定义变量

    struct students  //int float
    {
      char name[12];
      int  number;
      char sex[5];
    }student2;
    

    3.3、直接定义结构体变量

    struct
    {
       char name[12];
       int  number;
       char sex[5];
    }student2;
    

    4、结构体变量的初始化

    在声明结构体变量的时候进行初始化

    struct students student2 = { "Liangren", 30, "男" }; 
    
    struct students
    {
       char  name[12];
       int   number;
       char  sex[5];
    }student1 = {"Meung",28,"男"};
    
    struct students
    {
      char   name[12];
      int    number;
      char   sex[5];
     struct data  birthday;
    }student1 = { "Meung", 28, "nan", 1995, 5, 20 },
    student2 = { "Hucheng", 20, "男", 2000, 6, 15 },
    student3 = { "Gragon", 15, "男", 2005, 8, 16 };
    

    在{}里面,数据初始化的顺序,应该跟结构体成员的顺序保持一致。

    5、结构体变量的引用

    对于结构体变量的引用不能采用整体。

    “.”---->成员运算符

    结构体变量.成员名

    printf("%s
    ",student1.name);
    printf("%d
    ", student1.number);
    printf("%s
    ", student1.sex);
    

    注意:结构体同样可以包含另一个结构体类型

    struct data
    {
      int year;
      int month;
      int day;
    }; 
    
    struct students
    {
        char  name[12];
        int   number;
        char  sex[5];
       struct data  birthday;
    }student1 = { "Meung", 28, "nan", 1995, 5, 20 };
    
    int main()
    {    
         printf("%s
    ",student1.name);
         printf("%d
    ", student1.number);
         printf("%s
    ", student1.sex);
         printf("%s
    ", student1.birthday.year);
         return 0;
    }
    

    6、结构体数组

    结构体数组的定义和初始化

    跟结构体变量的这个定义是一样的。

    初始化也是一样。

    struct students
    {
       char  name[12];
    ​  int  number;
    ​  char  sex[5];
    ​  struct data  birthday;
    }student[3] ={
        { "Meung", 28, "nan", 1995, 5, 20 },
        { "Hucheng", 20, "男", 2000, 6, 15 },
    ​   { "Gragon", 15, "男", 2005, 8, 16 } }; 
    
    struct students student[3]={ 
        { "Meung", 28, "nan", 1995, 5, 20 },
    ​   { "Hucheng", 20, "男", 2000, 6, 15 },
    ​   { "Gragon", 15, "男", 2005, 8, 16 } };
    

    引用:student[0].成员名。

    7、结构体数组的存放

    数组的存放都是连续的内存。一个结构一个结构的去存放。(注意)

    8、结构体和指针

    8.1指向结构体变量的指针。

    定义及初始化:

    struct students *p = &student1;
    struct students *p;
    p = &student1;
    

    引用:

    1用指针运算符去找到结构体变量,用成员运算符找到成员。(一定注意要加括号)

    (*p).birthday.year
    (*p).结构体成员 一定要加括号 “.”优先级最高
    

    2用指向运算符去访问成员。

     p->birthday.year
     printf("%d
    ", (*p).birthday.year);
    ​ printf("%s
    ", (*p).sex);
    ​ printf("%s
    ", (*p).name);
    ​ printf("%d
    ", p->birthday.year);
    ​ printf("%s
    ", p->sex);
     printf("%s
    ", p->name); 
    

    8.2 指向结构体数组的指针。

    定义:

    struct students *p = student;
    struct students *p; 
    p = student;
    p=student[0];
    

    引用:

    printf("%s
    ", (p+1)->name); //whorld
    printf("%s
    ", (*(p + 1)).name); //whorld
    
  • 相关阅读:
    springcloud随便写点
    简单的数组排序
    简单wait(),notify()方法
    热词
    mysql日期函数
    springboot和jsp,以及引入jquery
    用户,权限,角色的关系
    通过字节码获取到的方法
    数据库并发事物
    在spring的业务层获取request,response
  • 原文地址:https://www.cnblogs.com/qzdd/p/12340396.html
Copyright © 2011-2022 走看看