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字节对齐
  • 相关阅读:
    298. Binary Tree Longest Consecutive Sequence
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    163. Missing Ranges
    336. Palindrome Pairs
    727. Minimum Window Subsequence
    211. Add and Search Word
    年底购物狂欢,移动支付安全不容忽视
    成为程序员前需要做的10件事
    全球首推iOS应用防破解技术!
  • 原文地址:https://www.cnblogs.com/Mike2019/p/12558858.html
Copyright © 2011-2022 走看看