栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

用C语言实现my

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用C语言实现my

思路:

有个struct类型的指针指向第一个成员,该成员的地址从0开始,内存是以字节为单位,那么其它成员所在的地址就是相对于结构体开头的字节偏移量,

size_t 是一些C/C++标准在stddef.h中定义的,size_t 类型表示C中任何对象所能达到的最大长度,它是无符号整数 

描述

C 库宏 offsetof(type, member-designator) 会生成一个类型为 size_t 的整型常量,它是一个结构成员相对于结构开头的字节偏移量。成员是由 member-designator 给定的,结构的名称是在 type 中给定的。

声明

下面是 offsetof() 宏的声明。

offsetof(type, member-designator)
返回值

该宏返回类型为 size_t 的值,表示 type 中成员的偏移量

#include
#include

//使用宏定义
#define OFFSETOF(struct_name,member_name)    (size_t)&(((struct_name*)0)->member_name)

struct S{
	char c1;
	int a;
	char* c2;
};

int main(){
	//struct S s;创建s变量,在内存中申请一块空间 
	printf("%d n",OFFSETOF(struct S, c1));
	printf("%d n",OFFSETOF(struct S, a));
	printf("%d n",OFFSETOF(struct S, c2));
		
	return 0;
} 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847932.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号