offsetof 例子「建议收藏」

offsetof 例子「建议收藏」
/*offsetofexample*/
#include”stdafx.h”
#include
#include
/************************************************************************/
/*MacroOBJECT_HEAD_ADDRESS:calculatethestruct’saddress

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

/* offsetof example */

#include “stdafx.h”
#include <stdio.h>
#include <stddef.h>

/************************************************************************/
/* Macro OBJECT_HEAD_ADDRESS : calculate the struct’s address according
/* to one of its member’s address
/************************************************************************/
#define OBJECT_HEAD_ADDRESS(ClassName,MemberName,Addre) /
Addre – offsetof(ClassName, MemberName)

struct S
{

int ID;
char *addr;
char name[20];
};

struct S1
{

S employee;
char *title;
};

struct S2
{

char singlechar;
int arraymember[10];
char anotherchar;
};

int main(int argc, char* argv[])
{

/* Example 1
S2 s2 = {‘a’, 10, ‘b’};
int head = int(&(s2.singlechar));
int memb = int(&(s2.anotherchar));

int i = OBJECT_HEAD_ADDRESS(S2, anotherchar, memb);

printf (“offsetof(S2, singlechar) is %d/n”, offsetof(S2, singlechar));
printf (“offsetof(S2, arraymember) is %d/n”, offsetof(S2, arraymember));
printf (“offsetof(S2, anotherchar) is %d/n”, offsetof(S2, anotherchar));
printf(“s2.anotherchar’s address is %x ==> s2’s address is %x/n”, memb, i);
*/
/* Example 2
S s = {100, “Nanjing”, “Thomas”};
int id = int(&(s.ID));
int ad = int(&(s.addr));
int nm = int(&(s.name));

int j = OBJECT_HEAD_ADDRESS(S, addr, ad);

printf (“offsetof(S, ID) is %d/n”, offsetof(S, ID));
printf (“offsetof(S, addr) is %d/n”, offsetof(S, addr));
printf (“offsetof(S, name) is %d/n”, offsetof(S, name));
printf (“s.ID’s address : %x/ns.addr’s address : %x/ns.name’s address : %x/n”, id, ad, nm);
printf(“s.addr’s address is %x ==> s’s address is %x/n”, ad, j);
*/
/* Example 3 */
S1 s1 = {
{100, “Nanjing”, “Thomas Chen”},”Thomas Chen”};
int td = int(&(s1.title));
int k = OBJECT_HEAD_ADDRESS(S1, title, td);

printf (“offsetof(S1, employee) is %d/n”, offsetof(S1, employee));
printf (“offsetof(S1, title) is %d/n”, offsetof(S1, title));
printf(“s1.title’s address is %x ==> s1’s address is %x/n”, td, k);

return 0;
}
/* Example 1 Output */
offsetof(S2, singlechar) is 0
offsetof(S2, arraymember) is 4
offsetof(S2, anotherchar) is 44
s2.anotherchar’s address is 12ff7c ==> s2’s address is 12ff50

/* Example 2 Output */
offsetof(S, ID) is 0
offsetof(S, addr) is 4
offsetof(S, name) is 8
s.ID’s address : 12ff64
s.addr’s address : 12ff68
s.name’s address : 12ff6c
s.addr’s address is 12ff68 ==> s’s address is 12ff64

/* Example 3 Output */
offsetof(S1, employee) is 0
offsetof(S1, title) is 28
s1.title’s address is 12ff7c ==> s1’s address is 12ff60

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/172108.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Jenkins安装_jenkins安装与配置

    Jenkins安装_jenkins安装与配置前言jenkins的环境搭建方法有很多,本篇使用docker快速搭建一个jenkins环境。环境准备:mac/Linuxdockerdocker拉去jenkins镜像先下载jenkins镜

  • oracle存储过程语法

    oracle存储过程语法前两天无意见看见了一个非常适合学习Oracle附上链接:https://blog.csdn.net/yucaifu1989/article/details/15813793Oracle存储过程基本语法存储过程   1CREATEORREPLACEPROCEDURE存储过程名   2IS   3BEGIN   4NULL;   5END; 行1:   CREAT…

  • Java 正则表达式的用法和实例

    Java 正则表达式的用法和实例一、概述:用来描述或者匹配一系列符合某个语句规则的字符串二、单个符号1、英文句点”.”符号:匹配单个任意字符。表达式”t.o“可以匹配:tno,t#o,teo等等。不可以匹配:tnno,to,Tno,t正o等。2、中括号”[]“:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。表达式:t[abcd]n只可以匹配:tan,tbn,tcn,tdn。不可以匹配:th…

  • 安卓framework面试题(高级Android面试题)

    Framework面试题 Android 系统基础 JVM、Dalvik和ART是什么以及他们的关系 01 Binder机制 02 系统级app和第三方应用级app分别在什么目录下?system/priva-app和system/app目录的权限有什么…

  • python如何生成随机数_python 随机字符串

    python如何生成随机数_python 随机字符串今天学习了用python生成仿真数据的一些基本方法和技巧,写成博客和大家分享一下。本篇博客主要讲解如何从给定参数的的正态分布/均匀分布中生成随机数以及如何以给定概率从数字列表抽取某数字或从区间列表的某一区间内生成随机数,按照内容将博客分为3部分,并附上代码。1从给定参数的正态分布中生成随机数当考虑从正态分布中生成随机数时,应当首先知道正态分布的均值和方差(标准差),有了这些,就可以调用pytho…

  • Java动态拼接SQL–02–Jpa「建议收藏」

    Java动态拼接SQL–02–Jpa「建议收藏」本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。如果需要了解该框架的入门,百度一下,很多入门的介绍。在这篇文章的接下来一篇,会有一个系列来讲解mybatis,这个系列从mybatis的入门开始,到基本使用,和spring整合,和第

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号