zoukankan      html  css  js  c++  java
  • 【004:结构体内存地址的连续问题】

    对于结构体内存地址的连续性问题测试

    代码如下,编辑器是为mingw32

    /**
    ********************************************************
    测试:关于结构体内存对齐和内存地址连续的问题
    ***********************************************************
    */
    
    
    #include <stdio.h>
    
    
    
    #pragma pack(push)
    #pragma pack(1)
    typedef struct _GPIO{
        int num;
        char ch;
        char hj;
        int key;
    }GPIO;
    #pragma pack(pop)
    
    typedef struct _USART{
        int num;
        char ch;
        char hj;
        int key;
    }USART;
    
    
    
    
    
    int main(void)
    {
        GPIO gpio;
        USART usart;
        printf("内存对齐的简单测试 
    ");
        printf("
     sizeof(int) = %d ",sizeof(int));
        printf("
     sizeof(char) = %d ",sizeof(char));
        printf("
     sizeof(gpio) = %d ",sizeof(gpio));
        printf("
     sizeof(usart) = %d ",sizeof(usart));
    
        printf("内存连续的简单测试 
    ");
        printf("
     gpio  0X%04X  0X%04X  0X%04X  0X%04X",&gpio.num,&gpio.ch,&gpio.hj,&gpio.key);
        printf("
     usart 0X%04X  0X%04X  0X%04X  0X%04X",&usart.num,&usart.ch,&usart.hj,&usart.key);
    
    
    
        return 0;
    }
    
    
    

    输出结果如下

     内存对齐的简单测试
    
     sizeof(int) = 4
     sizeof(char) = 1
     sizeof(gpio) = 10
     sizeof(usart) = 12
    
     内存连续的简单测试
    
     gpio  0X60FEA6  0X60FEAA  0X60FEAB  0X60FEAC
     usart 0X60FE98  0X60FE9C  0X60FE9D  0X60FEA0
    

    分析结果如下

    • struct的内存地址是连续的,与结构定义结构体变量的顺序相同;
  • 相关阅读:
    NOIP2015 D1 解题报告
    2017.10.2 国庆清北 D2T2 树上抢男主
    2017.10.6 国庆清北 D6T3 字符串
    2017.10.1 国庆清北 D1T2 两个逗比捉迷藏
    电压驱动和电流驱动
    电子管
    点亮板载LED
    ESP8266——一般控制方法
    ESP8266——CPU频率更改和深度睡眠模式
    ESP8266——ADC
  • 原文地址:https://www.cnblogs.com/yexiaopeng/p/7570471.html
Copyright © 2011-2022 走看看