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字节对齐
  • 相关阅读:
    let 和 const
    关于AVR单片机熔丝位的设置和拯救方法大全 AVR单片机熔丝位的设置和详细的拯救方法
    myeclipse出现 “couldn't open the editors 解决方案
    20不努力,30做助理(转载)
    强大的WMIC
    怎样设计一个好的PCB
    查看电脑硬件信息
    一天总结
    正式写技术博客,记录一下心情
    jquery 可选择可编辑的文本框插件
  • 原文地址:https://www.cnblogs.com/Mike2019/p/12558858.html
Copyright © 2011-2022 走看看