zoukankan      html  css  js  c++  java
  • 结构体和共同体

    结构体
    定义多个不同类型的成员变量组合在一起,以实现复杂的数据结构。
    格式:
     
    struct [标签名]  { 
        类型    变量名;
        类型    变量名;
        ...
    } [ 变量1={初始化},  变量2 ...];
     
    或者:
     
    typedef struct{
     
        类型    变量名;
        类型    变量名;
        ...
    } [标签名];
     
    示例:
     
    struct Books {
     
       int   id;
       char  title[50];
       char  author[50];
       
    } book;
     
     
    当两个结构体互相包含,则需要对其中一个结构体进行声明:
     
    //声明
    struct B; 
     
    //结构体A指向结构体B
    struct A{
        struct B *partner;
    };
     
    struct B{
        struct A *partner;
    };
     
     
    位域
    有些信息在存储时,并不需要占用一个完整数据空间,而只需占几个或一个二进制位。所谓"位域"是把字节中的二进位划分为几个不同的区域,并说明每个区域的位数。
    格式:整型  变量名 : 宽度
     
    struct {
        int  a:8;
        unsigned  b:16; //等同于 unsigned int
        int  :4;    // 空域,会空出4位的空间
        signed char  c;//char 保存的也是整数
        
    } code;
     
    值得注意的是宽度表示是的所占二进制位,不能超过它自身的类型。
    如: char 占1个字节,也就是8位,所以宽度不能超过8,即: char a:9 会报错。
    如: int 占4个字节,也就是32位,所以宽度不能超过32,即: int a:33 会报错。
     
    整个结构体所占内存大小是最大的那数据类型的整数倍.
    {
    int  a:32;
    char b:8;
    }
    共计 32 + 8 = 40 / 8 = 5字节,而成员变量中占用空间最大的是int型,一个int占4个字节,而4个字节存不下,得再扩展一个int空间,所以就占8个字节了。可以通过 sizeof(变量) 去验证结果;
     
    共用体
    定义多个不同类型的成员变量共用相同的内存空间,而内存空间只能轮流使用,内存空间大小取决于最大的那个成员变量。
     
    union [标签名] {
     
        类型    变量名;
        类型    变量名;
        ...
        
    } [变量1, 变量2 ...];
     
    示例:
    union Student {
     
       char  name[10];
       int age;
       float weight;
       
    } boy;
     
     
    int main( ) {
     
       //正确使用
       boy.name = "Tom";
        printf( "男孩名字: %s 
    ", boy.name);
        
       boy.age = 20;
       printf( "男孩年龄: %d 
    ", boy.age);
       
       boy.weight = 64.5
       printf( "男孩体重: %f 
    ", boy.weight);
     
       //错误使用
       union Student girl; 
       girl.name = "Ailsa";
       girl.age = 20;
       girl.weight = 46.5
       
       printf( "女孩: %s  %d  %f 
    ", girl.name, girl.age, girl.weight);
      
    }
  • 相关阅读:
    vue基础04计算属性
    vue基础01条件渲染
    vue基础14vuex
    其他03动态拼接地址,使用本地的图片不显示
    其他05vue中ref
    HTML基础02CSS
    其他12es6...运算符
    其他11依赖注入
    其他07插槽
    其他06js类型判断
  • 原文地址:https://www.cnblogs.com/zbseoag/p/10716436.html
Copyright © 2011-2022 走看看