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

    1 结构体定义与声明

    1.1 定义结构体类型和声明结构体变量

    struct Node{
        int data;
        struct Node *next
    };     //定义一个结构体类型
    
    struct Node node2;    //声明一个结构体变量

    1.2 定义结构体类型并声明结构体变量

    struct Node{
        int data;
        struct Node *next
    }node2;     //定义一个结构体类型,并声明一个结构体变量

    1.3 使用typedef定义结构体类型并声明结构体变量

    typedef struct Str_Node{
        int data;
        struct Node *next
    }Node;     //定义一个结构体类型,并将struct Str_Nodechng 重命名为 Node,后面声明结构体变量时可以直接使用Node ***
    
    Node node2;    //声明一个结构体变量,相当于struct Str_Node node2
    struct Str_Node node1    //声明一个结构体变量 如果不用这种方式,那么Str_Node也可以省略掉

    2 结构体四字节对齐

    1 案例一

    struct Str_node{
        char a;    //4字节 
        int b;    //1字节 
        char c;    //8字节 
    }str_node;
    struct Str_node str_node;
    len = sizeof(str_node);  //12, a和c各补齐后面的三个字节,形成四字节对齐
    a
    b
    a

    2 案例二

    struct Str_node{
        char a;    //4字节 
        char b;    //1字节 
        int c;    //8字节 
    }str_node;
    struct Str_node str_node;
    len = sizeof(str_node);  //8, a和b占用2个字节,再补齐后面2个字节,形成四字节对齐
    a b
    c

    3 案例三

    struct Str_node{
        char a;    //4字节
        char b;    //4字节 
        char c;    //4字节 
        char d;    //4字节 
        char e;    //1字节 
        int f;    //8字节 
    }str_node;
    struct Str_node str_node;
    len = sizeof(str_node);  //12, a,b,c,d共占4个字节,d补齐后面3个字节,形成四字节对齐
    a b c d
    e
    f

    4 总结

    一般默认是四字节对齐,如果想节省内存不需要四字节对,可以在定义结构体之前加入以下伪指令:

    #pragma pack(1)     //设置1字节对齐
  • 相关阅读:
    Unity shader with lightmap
    清理数据库日志
    Sqlserver数据库还原一直显示“正在还原…”解决方法
    如何查看 SQL Server 执行的历史 SQL 语句记录?
    MYSQL 命令行大全 (简洁、明了、全面)
    C#Datatable导入sqlserver数据库中,三种常见,快捷的方法
    MongoDB下载页面
    等级保护和分级保护区别与联系
    等级保护和分级保护
    SQL2005EXPress自动备份
  • 原文地址:https://www.cnblogs.com/Mike2019/p/12558858.html
Copyright © 2011-2022 走看看