struct 结构体可以这么用

C# 结构体(Struct) 为了定义一个结构体,您必须使用 struct 语句。struct 语句为程序定义了一个带有多个成员的新的数据类型。 阅读详情
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct
{
	uint32_t msg_len;
	uint32_t msg_type;
	char msg_body[0];
}MSG;

#define BODY_OFFSET (unsigned long)(&(((MSG *)0)->msg_body))
int main(int argc,char *argv[])
{
	MSG a,*p;
	printf("sizeof uint32_t is %d\n",sizeof(uint32_t));
	printf("sizeof MSG is %d\n",sizeof(MSG));
	printf("sizeof msg_len is %d\n",sizeof(a.msg_len));
	printf("sizeof msg_body is %d\n",sizeof(a.msg_body));
	printf("BODY_OFFSET is %lu\n",BODY_OFFSET);

	p = malloc(sizeof(MSG)+64);
	if(p){
		strcpy((char *)p + sizeof(MSG),"My name is iphonec.");
		printf("msg_body is:%s\n",p->msg_body);
		free(p);	
	}

	return 0;
}


ubuntu虚拟机

输出:

sizeof uint32_t is 4
sizeof MSG is 8
sizeof msg_len is 4
sizeof msg_body is 0
BODY_OFFSET is 8
msg_body is:My name is iphonec.


struct 结构体的定义及初始化问题 /*****************************/ //以上说明,结构体也没啥特殊的 ,跟普通的数据类型定义变量是一样的。。。 //程序在定义变量的时候,已经分配好了内存空间,只是里面存储的数据是随机的,是垃圾值。 //对于非指针变量来说,,照样可以输出或者操作,仅仅是可能会得到不正确的结果,程序是可以正常运行的。 //对于指针变量来说,同样。但是其内存空间存储的值 是被当做另外一个地址看待的,,所以 不初始化成有效的地址值得话, //程序可能会崩溃或者遇到不可预料的结果。 //注:memset 阅读详情

相关推荐

在MacBook上直接跑Windows Server 2022:一个开发者的真实踩坑与配置全记录

本文详细记录了在MacBook上原生运行Windows Server 2022的完整流程与优化技巧。通过Boot Camp实现非虚拟机安装,开发者可以充分利用Mac硬件性能,搭建高效的本地开发环境,特别适合需要测试跨平台应用和服务器功能的场景。文章涵盖驱动处理、分区策略、Docker配置等关键步骤,为技术极客提供实用指南。

weixin_42620913的博客 247

typedef的4种常见用法

typedef的4种常见用法: 一、给已定义的变量类型起个别名 二、定义函数指针类型 三、定义数组指针类型 四、定义数组类型 总结一句话:“加不加typedef,类型是一样的“,这句话可以这样理解: 没加typedef之前如果是个数组,那么加typedef之后就是数组类型; 没加typedef之前如果是个函数指针,那么加typedef之后就是函数指针类型; 没加typedef之前如果是个...

野生猿-群号1025127672 9万+

别再混淆了!深入浅出图解四元数姿态控制中的‘误差四元数’(附四种定义对比与仿真)

本文深入解析四元数姿态控制中的误差四元数定义差异,对比四种常见定义(如Q₀∘Q⁻¹与Q⁻¹∘Q₀)及其对PD控制性能的影响。通过刚体动力学仿真验证,揭示定义二(Q⁻¹∘Q₀)在无人机和航天器控制中的最优性能,提供工程实践建议与参数整定技巧,帮助开发者避免常见陷阱并提升控制效率。

weixin_42528191的博客 277

结构体定义 typedef struct 用法详解和小结

typedef可以声明新的类型名来代替已有的类型名,但却不能增加新的类型.typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。在编程中使用typedef目的一般有两个,一个是给变量提供一个易记且意义明确的新名字(类型有新别名,方便变量的定义),另一个是简化一些比较复杂的类型声明。在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。

Cerulea_n的博客 4万+

Moodle平台题库建设技术

Moodle平台题库建设技术简述1新的改变1功能快捷键1合理的创建标题,有助于目录的生成1如何改变文本的样式1插入链接与图片1如何插入一段漂亮的代码片1生成一个适合你的列表1创建一个表格1设定内容居中、居左、居右1SmartyPants1创建一个自定义列表1如何创建一个注脚注释也是必不可少的1KaTeX数学公式1新的甘特图功能,丰富你的文章1UML 图表1FLowchart流程图1导出与导入导出1...

lxf78的博客 4534

SAP Cloud ERP 是什么,一篇文章讲清楚

SAP Cloud ERP并非简单将传统ERP搬到云上,而是对企业核心流程、数据和管理方式的全面重构。它包含S/4HANA Cloud的公有云版(标准化、快速部署)和私有云版(灵活定制),分别对应GROW with SAP和RISE with SAP实施路径。核心价值在于实现实时数据整合、端到端流程贯通及持续演进能力。企业需根据发展阶段选择:新兴企业适合标准化公有云,复杂组织可考虑私有云迁移。关键在于转变管理思维,避免将旧系统问题复制到新平台。上云决策本质是企业对数字化基座的选择,需权衡标准化与个性化需求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 108

typedef介绍

本文介绍typedef的用法。 1. 概述 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 typedef本身是一种存储类的关键字,与auto、extern、static、register等关键字不能出现在同一个表达式中。 2. 作用及用法 2.1 typedef的用法 使用typedef定义新类型的方法:把关键字typedef加在变量声明表达式开头就行了。 下面以两个示例,描述ty

reason的博客 1716

OpenClaw人人养虾:配置通义千问(Qwen)

通义千问(Qwen)是阿里云推出的大语言模型系列。OpenClaw 支持通过 Qwen Portal 插件实现 OAuth 免费额度认证,每日可免费使用 2000 次请求,无需绑定支付方式。

王国平的博客 1257

关键字 typedef 用法详细解析

li b = 10;ch c = 'a';return 0;运行结果如下图所示:在这里,我们将 int、char、long long int 分别重定义为i、ch、li,并通过新的类型名声明变量 a,b,c 由此我们可以知道,当使用 typedef 定义类型名后,我们可以使用新的类型名声明与原类型名声明的变量相同的变量。注:使用 typedef 定义类型名后,原类型名作用不变。2).自定义数据类型重定义:a.结构体:int age;

H20041112的博客 1万+

2026华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解

华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,

KJ.JK 4704

有限元分析-静力学分析-与分析解对比-——以阶梯轴的静力分析为例——静态结构分析

150mm,a=300mm{a=300mm}a=300mm,b=200mm{b=200mm}b=200mm,L=1000mm{L=1000mm}L=1000mm,F=300kN{F=300kN}F=300kN,材料为45,弹性模量E=2.1e11Pa{E=2.1e11Pa}E=2.1e11Pa,泊松比v=0.28{v=0.28}v=0.28,屈服应力δs=355MPa{δ_s=355MPa}δ。使用line body生成的模型,可以选择自动划分网格的,WB会将以梁单元将其划分完成,例如图2所示。

qq_15963745的博客 66

C语言菜鸟入门·各种typedef用法超详细解析

详细解释了各种typedef的用法,例如数据类型,函数,指针,结构体(typedef struct),共用体(typedef union)以及枚举(typedef enum)等的详细用法解析

时光の尘的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[C++] 结构体 struct 详解

结构体思密达 先 赞 后 看 养 成 习 惯

zty20120913的博客 5593

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

typedef struct 和 struct 定义结构体的区别

typedef struct 和 struct 定义结构体的区别 1. 定义结构体的方式 struct 结构体名 { 类型 变量名; 类型 变量名; }; typedef struct 结构体名 { 类型 变量名; 类型 变量名; }结构体别名1,结构体别名2; typedef struct { 类型 变量名; 类型 变量名; }结构体别名; struct 是声明结构体类型时所必须要使用的关键字,不能省略! { } 内 是结构体包含的子项,称为结构体成员 2. C语言中定义结构体 不用t

Yany的博客 650

struct结构体的用法

struct是C语言中用于定义复合数据类型的关键字,常用于组织和管理复杂数据。通过结构体,可以将多个相关的数据组合在一起,提高代码的可读性和可维护性。掌握结构体的定义、初始化、访问、指针操作等技巧,是C语言编程的基础。

pys1719886504的博客 1016

Golang中结构体Struct

前言 这里总结的Golang 笔记只适合有点编程基础的人看,比如Java 往期内容: Golang学习 【day1】变量、类型 Golang学习,指针,循环控制相关 循环结构控制、包函数的使用 异常处理、数组 老奶奶可以看懂的切片 老奶奶可以看懂系列之—Golang的Map映射 结构体Struct面向对象Golang与Java面向对象区别Struct使用Struct介绍Struct结构Struct四种声明类型Struct使用细节结构体类型Struct序列化 结构体Struct 面向对象 面向对象程

weixin_44048140的博客 1394

C语言——struct结构体

定义 struct 的一般语法如下struct 结构体名称 {类型 成员1;类型 成员2;// 更多成员定义举个栗子~int id;在该示例中,我们定义了一个名为 Student 的结构体,它包含了学生的学号、名字和成绩,分别是整型、字符数组和浮点数类型。对齐方式是计算机系统中用来确定数据存储地址的规则,它确保数据在内存中以特定的边界开始存储。简而言之,对齐方式是指数据对象存储时所采用的地址对齐策略。比如每个数据的起始地址都是4的倍数,这就是4字节对齐,依次类推。对齐方式是为了。

m0_60503814的博客 6142

IO之struct stat结构体

/文件对应的模式,文件,目录等//inode节点号//设备号码//特殊设备号码//文件的连接数//文件所有者//文件所有者对应的组//普通文件,对应的文件字节数//文件最后被访问的时间//文件内容最后被修改的时间//文件状态改变时间//文件内容对应的块大小//伟建内容对应的块数量。

2301_81570594的博客 1196

MATLAB struct结构体的应用

1. 使用直接引用方式定义结构 与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x: x.real = 0; % 创建字段名为real,并为该字段赋值为0 x.imag = 0 % 为x创建一个新的字段imag,并为该字段赋值为0 x = real: 0 imag: 0 然后可以将其动态扩充为数组: x(2).real...

qq_38991255的博客 969

c语言struct结构体头文件用什么,struct 结构体,到底如何用啊

当前位置:我的异常网» C语言»struct 结构体,到底如何用啊struct 结构体,到底如何用啊www.myexceptions.net网友分享于:2014-04-22浏览:3次struct 结构体,到底怎么用啊???#include#include#include#defineSTACK_INIT_SIZE100//这里没有分号的注意了#defineSTACKINCRE...

weixin_28804379的博客 4080

struct和typedef struct 结构体定义区别

1.结构体的定义: 允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(实际上应称为 结构体类型)。 2.下面以一个结构体实例来说明一下struct的用法: structos_tcb { OS_STK*OSTCBStkPtr; OS_STK*OSTCBStkBottom; INT32UOSTCBStkSi...

In ShangHai | 分析技术的点点滴滴。 2151

[Ruby]Struct 结构体的使用

Struct 结构体的使用 结构体类。由Struct.new生成该类的子类。在子类中使用new方法就可以生成构造体。构造体子类中定义了构造体成员的访问方法n = Struct.new("N", :name, :age) obj = n.new("hello",6) =》 #<struct Struct::N name="hello", age=6> obj.class => Struct::N

Xunzi229的博客 5601

C# 结构体(Struct)精讲

一、结构体的概念 在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。 二、使用结构体的示例 为了定义一个结构体,您必须使用 struct 语句。struct 语句为程序定义了一个带有多个成员的新的数据类型。 1、声明结构体 //Pascal命名规则 struct Per { //里面的一些属性 public string name; public int age; public string sex; };

路虽远,行则必至! 9488

结构体【struct】

结构体【struct】 一.结构体定义 概念:结构体是由一系列不同或相同基本类型数据组合而成的新的复合数据集合,从而使这些数据项组合起来反应一个信息。   意义:结构体的使用为处理复杂的数据结构(如动态数据结构等)提供了有效的手段,而且,它们为函数间传递不同类型的数据提供了方便。   特点: 1.结构体类型是用户自行构造的; 2.它由若干不同的基本数据类型的数据构成。 3.它属于

sangredo的博客 1900

golang-struct结构体

本文讲解了golang中的结构体,golang没有类的概念,但是他可以通过结构体的嵌套来实现类的继承相关功能。

lmryBC49的博客 980
上一篇: linux/unix 学习
下一篇: ubuntu中apt-get设置网络代理
iphonec
博客等级 码龄16年 28粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值