zoukankan      html  css  js  c++  java
  • 初识结构体

    结构体
    声明一个结构体类型的一般形式为:
                 struct    结构体名   {成员表列};
    如:struct student
            {
                  int num;
         char name[20];
         char sex;
                  int age;
                  float score;
                  char addr[30];
             } ;
    定义结构体类型变量:
      (1)先声明结构体类型再定义变量名
         例如:struct  student        student1, student2;

      (2)在声明类型的同时定义变量
         这种般形式为:
          struct 结构体名
         {
             成员表列;
          }变量名表列;
              
    在定义了结构体变量以后,当然可以引用这个变量。但应遵守以下规则:  
      (1)不能将一个结构体变量作为一个整体进行输入和输出。
      (2) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。
    结构体数组:和定义结构体一样,
      struct student
      {
     int num;char name[20];
      char sex;int age;
     float score;
     char addr[30];
      }  stu[3];
    定义了一个数组stu,数组有3个元素,均为struct student类型数据。
    结构体成员的表现形式:
    结构体变量.成员名
    (*p).成员名
     p->成员名
    其中->称为指向运算符。
    链表
      用结构体建立链表:
      struct student
      {
       int num;
     float score;
      struct student *next ;
      };
      其中成员num和score用来存放结点中的有用数据(用户需要用到的数据),next是指针类型的成员,它指向struct student类型数据(这就是next所在的结构体类型)
    动态内存
      处理动态内存所需的函数
      库函数提供动态地开辟和释放存储单元的
      有关函数:
    (1)malloc函数: void *malloc(unsigned int size);
        其作用:是在内存的动态存储区中分配一个长度为size的连续空间。
        返回值:是一个指向分配域起始地址的指针(类型为void)。如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL)。
    (2) calloc函数 :void *calloc(unsigned n,unsigned size);
        作用:
     在内存的动态存储区中分配n个长度为size的连续空间。
        返回值:一个指向分配域起始地址的指针;
               如果分配不成功,返回NULL。
        用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为Size。
    (3) free函数:    void free(void *p);
        作用:
     释放由p指向的内存区,使这部分内存区能被其他变量使用。
        p是最近一次调用calloc或malloc函数时返回的值。
        free函数无返回值。
    共用体
    使几个不同的变量共占同一段内存的结构称为 “共用体”类型的结构。
    定义共用体类型变量的一般形式为:
      union 共用体名
     {         
        成员表列
      }变量表列;
    共用体和结构体的比较:
      结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。
      共用体变量所占的内存长度等于最长的成员的长度。
    枚举
      枚举:将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
      申明枚举类型用enum
      enum weekday{sun,mon,tue,wed,thu,fri,sat};

  • 相关阅读:
    react-native 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
    Hibernate HQL和原生SQL查询的一点区别
    JPA project Change Event Handler问题解决[转]
    Webstorm2016激活码[ 转]
    [支付]微信NATIVE扫码支付JAVA实现
    jeecms附件标签用法
    Eclipse查找类路径快捷方式
    第4条:用辅助函数来取代复杂的表达式
    关于python2中的unicode和str以及python3中的str和bytes
    第2条:遵循PEP8风格指南
  • 原文地址:https://www.cnblogs.com/kutoli/p/7875066.html
Copyright © 2011-2022 走看看