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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python机器学习库sklearn——Lasso回归(L1正则化)

    python机器学习库sklearn——Lasso回归(L1正则化)全栈工程师开发手册(作者:栾鹏)python数据挖掘系列教程TheLasso是估计稀疏系数的线性模型。它在一些情况下是有用的,因为它倾向于使用具有较少参数值的情况,有效地减少给定解决方案所依赖变量的数量。因此,Lasso及其变体是压缩感知领域的基础。在一定条件下,它可以恢复一组非零权重的精确集。在数学公式表达上,它由一个带有ℓ1\ell_1先验的正则项的线性模型组成。

    2022年6月14日
    74
  • latex中bibtex生成参考文献_英文参考文献自动生成方法

    latex中bibtex生成参考文献_英文参考文献自动生成方法创建BibTeX文件  BibTex是一种专门用于协调LaTeX的参考文献处理的文件格式,其后缀为.bib。BibTex可以用JabRef,bibtex等软件生成,也可以直接用记事本创建,操作起来非常灵活,这里主要介绍用JabRef来生成BibTex文件。JabRef是一套开放源代码、处理BibTeX格式的文献管理软件,提供了简易操作的界面来编辑BibTeX档案,功能包含从网络上的科学数据库汇…

    2025年8月30日
    5
  • 如何激活成功教程pycharm专业版_pycharm2021专业版永久激活

    如何激活成功教程pycharm专业版_pycharm2021专业版永久激活1.下载pycharm的profession版本:http://www.jetbrains.com/pycharm/download/2.下载到本地后解压提取文件然后用命令进入到/pycharm-professional-2018.3.2/pycharm-2018.3.2/bin下:3.到http://idea.lanyus.com/网址下下载激活成功教程补丁,直接下载补丁文件http://ide…

    2022年8月29日
    2
  • 《算法和数据结构》学习路线指引

    前WorldFinal选手对学习算法的一点总结。五张思维导图解决你的困惑

    2022年4月9日
    86
  • 免杀工具汇总_一键免杀

    免杀工具汇总_一键免杀今天整理以前的笔记,把这部分工具整理了一下,虽然没有白利用稳,但这些工具也能在一定程度起到一定的免杀作用。DKMC项目地址:https://github.com/Mr-Un1k0d3r/DKMC可以创建一个outputs文件夹存放shellcode启动pythondkmc.py操作顺序:Sc:是将msf生成的raw文件转换位shellcode代码…

    2022年4月19日
    84
  • vue监听点击事件_vue reload

    vue监听点击事件_vue reload运用的知识点:JavaScript的onbeforeunload函数使用方法window.onbeforeunload=function(){  return‘’;}注意:有返回值(”,true,false…都可以)才能弹出显示,或者有需要执行的事件也行。onload、onunload、onbeforeunload的执行问题:页面加载…

    2022年10月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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