一世轻尘 发表于 2020-12-19 14:33:35

结构体字节对齐

xdm,二三条好理解,但这个第一条是么意思,啥叫首地址能被成员大小整除????{:10_257:}

一世轻尘 发表于 2020-12-19 18:52:52

在线蹲个大佬{:10_279:}

xieglt 发表于 2020-12-21 19:18:13

一世轻尘 发表于 2020-12-19 18:52
在线蹲个大佬

#include <stdio.h>
#define        ADDR(a)        ((int)(&(a)))
#define ADDR_PRINT(a)        printf("address of "#a" = 0X%XH\n",ADDR(a))
#define SIZE_PRINT(a)        printf("size of "#a" = %d\n",sizeof(a))

typedef struct tagTest
{
        char        _c;
        double        _d;
}TEST,*LPTEST;

int main(void)
{
        //第一条准则并不通用,看代码运行结果。
        char a = 0;
        TEST t;
        TEST t1;
        ADDR_PRINT(t._c);
        ADDR_PRINT(t._d);
        SIZE_PRINT(TEST);
        SIZE_PRINT(double);
        printf("address of t = %X,address mod double = %d\n",ADDR(t),ADDR(t)%sizeof(double));
        printf("address of t1 = %X,address mod double = %d\n",ADDR(t1),ADDR(t1)%sizeof(double));
        return 0;
}

一世轻尘 发表于 2020-12-21 19:34:24

xieglt 发表于 2020-12-21 19:18


看不了,操作系统不一样

xieglt 发表于 2020-12-21 19:43:42

一世轻尘 发表于 2020-12-21 19:34
看不了,操作系统不一样

编译通不过,改一下吧。
#define        ADDR(a)        (reinterpret_cast<int>(&(a)))

xieglt 发表于 2020-12-21 19:57:26


一世轻尘 发表于 2020-12-21 20:00:00

本帖最后由 一世轻尘 于 2020-12-21 20:01 编辑

xieglt 发表于 2020-12-21 19:43
编译通不过,改一下吧。
#define        ADDR(a)        (reinterpret_cast(&(a)))

还是通不过{:10_262:}
win10
页: [1]
查看完整版本: 结构体字节对齐