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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Docker 常用命令!还有谁不会?[通俗易懂]

    Docker 常用命令!还有谁不会?

    2022年2月19日
    41
  • intellij idea激活码多少钱(最新序列号破解)

    intellij idea激活码多少钱(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    53
  • intellij idea 全局搜索_idea设置全局搜索

    intellij idea 全局搜索_idea设置全局搜索IntelliJIDEA使用教程(总目录篇)我们用Eclipse或者IntelliJIDEA编程,有时候需要将整个项目的某个字符串替换成其他的。全局搜索我会,我还给调成ctrl+g了呢,但是遇到要全局(整个项目)替换字符串。哎哟,我有点蒙了。这不换了编辑器吗。我用的是eclipse的keymap而且电脑又不是mac。那么问题来啦。怎么找快捷键呢。如下;额,顺便说下…

    2022年9月27日
    7
  • irr模型不足_SVM模型

    irr模型不足_SVM模型LR模型常见问题小议标签:LR机器学习2016-01-1023:33671人阅读评论(0)收藏举报本文章已收录于:分类:机器学习(10)作者同类文章X版权声明:本文为博主原创文章,转载请注明出处。目录(?)[+]数据归一化特征离散化组合

    2022年10月12日
    3
  • 权限系统与RBAC模型概述[绝对经典]

    0.前言一年前,我负责的一个项目中需要权限管理。当时凭着自己的逻辑设计出了一套权限管理模型,基本原理与RBAC非常相似,只是过于简陋。当时google了一些权限管理的资料,从中了解到早就有了RBAC这个东西。可惜一直没狠下心来学习。更详细的RBAC模型非常复杂。本文只做了一些基础的理论性概述。本文资料完全来自互联网。  1.权限系统与RBAC模型概述

    2022年4月7日
    48
  • ping 与 traceroute 的工作原理分析

    ping 与 traceroute 的工作原理分析一、ping    ping程序的主要目的是测试主机是否可达,它发送 ICMP回显请求报文给目的主机,并等待返回ICMP回显应答    ping程序一般会周期性持续地发送ICMP请求报文,除非用户手动终止,或指定了发送报文个数    回显请求和回显应答通过序列号(icmp_seq)进行匹配,下图中序列号依次为1、2、3、4…    pi…

    2022年7月21日
    24

发表回复

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

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