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字节对齐
  • 相关阅读:
    for循环嵌套的原理
    php for循环|求1-100之间被3整除且被5不整除的偶数
    php 1-100之间能被3整除的数字之和;
    php判断某年某月有多少天
    关系运算符
    变量
    习题5-7 使用函数求余弦函数的近似值
    习题5-6 使用函数输出水仙花数
    习题4-11 兔子繁衍问题
    习题4-9 打印菱形图案
  • 原文地址:https://www.cnblogs.com/Mike2019/p/12558858.html
Copyright © 2011-2022 走看看