offset偏移量_如何调用结构体

offset偏移量_如何调用结构体一、函数原型#include<stddef.h>size_toffsetof(type,member);offsetof原型定义:defineoffsetof(t,m)((size_t)&((t*)0)->m)1、关于&((t*)0)的解释1-1:(type*)0作用是强制类型转换,将0转换为(type*)类型,一个type指针类型1-2:编译器在会将&((t*)0)优化为直接取地址,因为这种表达是:先访问空间,再取空间的

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

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

一、函数原型

#include <stddef.h>
size_t offsetof(type, member);

offsetof原型定义:define offsetof(t,m) ((size_t)&((t *)0)->m)
在这里插入图片描述
1、关于&((t *)0)的解释

1-1(type *) 0作用是强制类型转换,将0转换为(type*)类型,一个type指针类型
1-2:编译器在会将 &((t *)0) 优化为直接取地址,因为这种表达是: 先访问空间, 再取空间的地址,就相当于直接取地址。

2、注意:组成结构的字段的大小在不同的实现中可能不同,编译器可能在字段之间插入不同数量的填充字节。因此,元素的偏移量不一定是前面元素大小的总和。

二、函数demon,截取自man手册

#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{ 
   
	struct s { 
   
		int i;
		char c;
		double d;
		char a[];
	};

	/* Output is compiler dependent */

	printf("offsets: i=%ld; c=%ld; d=%ld a=%ld\n",
			(long) offsetof(struct s, i),
			(long) offsetof(struct s, c),
			(long) offsetof(struct s, d),
			(long) offsetof(struct s, a));
	printf("sizeof(struct s)=%ld\n", (long) sizeof(struct s));

	exit(EXIT_SUCCESS);
}

在这里插入图片描述

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

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

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


相关推荐

  • Linux环境下安装部署redis「建议收藏」

    Linux环境下安装部署redis「建议收藏」目录一、下载安装包二、安装redis2.1下载安装最新版的gcc编译器2.2上传安装包至/opt目录2.3解压命令2.4解压完成后进入目录2.5执行make命令2.6如果没有准备好C语言编译环境,执行make命令会报错2.7解决方案:运行makedistclean2.8然后再redis-6.2.6目录下再次执行make命令2.9跳过maketest继续执行:makeinstall3.0安装目录/usr/local/bin.

    2022年10月4日
    5
  • css选择器有哪些?[通俗易懂]

    css选择器有哪些?[通俗易懂]一、写在前面css选择器有很多,但是常用到的也就几个,今天总结一下。二、具体选择器2.1、id选择器#myId{}2.2、类选择器.myClass{}2.3、标签选择器p,h1{}2.4、后代选择器divh1{}2.5、子选择器div>h1{}2.6、兄弟选择器(所有的兄弟)ul~h1{}2.7、相邻兄弟选择器ul+h1{}2.8、属性选择器li[name=’sss’]{}2.9、伪类选择器h1:hover{}2.10h

    2025年8月23日
    4
  • FEC详解三_第二十三卦详解

    FEC详解三_第二十三卦详解继续上文讲解:3)标准的RTP头结构如下所示:其中第一个字节中的x标志位是否扩展了RTP头,RTP协议允许用户自定义的扩展,扩展的字段紧挨上述RTP固定头。RTP扩展投中承载如下信息:1).当前包所在的Group组序号,码流由连续的Group组成,每个Group拥有自己的唯一序号。(仅仅是小范围的唯一,序号大于255时,计数清零)2).当前包所在的Group组大小3

    2022年8月11日
    7
  • 最新海康摄像机、NVR、流媒体服务器、回放取流RTSP地址规则说明[通俗易懂]

    最新海康摄像机、NVR、流媒体服务器、回放取流RTSP地址规则说明[通俗易懂]本文档主要介绍海康威视设备直播预览RTSP、录像回放RTSP、流媒体取流的RTSPURL和IE直接预览、回放的HTTPURL。RTSP为取流协议,取到码流后需要解码显示,可以通过VLC播放器或者EasyPlayer播放器进行测试,IE等浏览器网页不支持RTSP协议直接取流预览或者回放,需要安装OCX插件,这也是目前大部分安防厂家的做法。目前也有很多支持RTSP进行网页无插件直播的流媒…

    2022年6月11日
    73
  • <c:forTokens/>标签

    <c:forTokens/>标签

    2021年9月7日
    48
  • navicat premium 15 for mac 激活码-激活码分享

    (navicat premium 15 for mac 激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlBI7JCUH1TG-eyJsaWNlbnNlSW…

    2022年3月22日
    138

发表回复

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

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