offset在C语言中使用是什么意思

Python021

offset在C语言中使用是什么意思,第1张

offset是偏移量的意思,这个一般在汇编语言中。

在c语言中一般用序号或者指针来进行操作。

比如

int a[4]//4个int类型的变量 数组。本来按偏 移量。

a-----------------a[0]

+4---------------a[1]

+4---------------a[2]

+4--------------a[3]

也可以用指针 int *p =a

那么就是

a------------p

+4 --------p+1

+4 --------p+2

+4---------p+3

#include <stddef.h>                // 导入头文件<stddef.h>

#define offsetof(type, member)     // 里面自带宏定义offsetof

// type填写结构体类型,member填写成员名称,返回内存偏移量,类型为size_t

// 举例如下

typedef struct { int a, b, c } struct_t

// 假设在32位机,结构间无空隙

offsetof(struct_t, a)    // 值为 0,相对于整个结构体,无内存偏移量

offsetof(struct_t, b)    // 值为 4,相对于整个结构体,4字节内存偏移量

offsetof(struct_t, c)    // 值为 8,相对于整个结构体,8字节内存偏移量

// 示例offsetof底层实现原理(不一定通用)

#define offsetof(t, m) (size_t)(&(((t *)0)->m))