结构体的成员变量在内存中存储的方式,决定于设定的内存对齐方式是几字节:gcc编译默认使用4字节对齐:

 1 #include <stdio.h>
 2
 3 typedef struct test_buf
 4 {
 5     int a;
 6     char c;
 7     char buf[8];
 8     char *str;
 9
10 }buf_t;
11
12 void test_send_srtbuf(void *arg)
13 {
14     //buf_t *revbuf = (buf_t *)arg;
15     buf_t *revbuf = arg;
16     printf("revbuf->a=%d,revbuf->c=%c,revbuf->buf=%s,revbuf->str=%s\n",revbuf->a,revbuf->c,revbuf->buf,revbuf->str);
17     //char *testbuf = arg;
18     //printf("testbuf=%s,testbuf大小为:%d\n",testbuf,sizeof(testbuf));
19     return;
20 }
21 int main(void)
22 {
23     int len = 0;
24     char revbuf[30] = {0};
25     buf_t buf={
26         .a = 25,
27         .c = 'b',
28         .buf="hello wr",
29         .str = "w143bd",
30     };
31     len = sizeof(buf);
32     printf("len =%d.\n",len);
33     printf("buf.a=%d ,buf.c=%c, buf.buf=%s, buf.str=%s\n",buf.a,buf.c,buf.buf,buf.str);
34     test_send_srtbuf(&buf);
35     return 0;
36 }上面程序的运行结果:

调用test_send_strbuf时,参数被解析为了void类型,解析时为了防止数据错乱,将它强制类型转换为结构体类型,赋值给了另一个变量,就可以访问成员的值。

转载于:https://www.cnblogs.com/path130/p/11114877.html

结构体的传参理解成员的存储方式相关推荐

  1. java中结构体入参_JNA中自定义结构体如何传参?

    1.先给出C的头文件里的结构体: typedef struct DetectionZone { Zone zone; DetectionZoneParam param; } DetectionZone ...

  2. C# 8: 可变结构体中的只读实例成员

    在之前的文章中我们介绍了 C# 中的 只读结构体(readonly struct)[1] 和与其紧密相关的 in 参数[2]. 今天我们来讨论一下从 C# 8 开始引入的一个特性:可变结构体中的只读实 ...

  3. 结构体 struct 的深入理解

    一.结构体 1.结构体的声明: struct tag { member-list; }variable-list; 解析:tag是结构体的标签, struct tag是结构体的类型, member-l ...

  4. 自己实现了一个C语言例程,加深对宏、大小端、typeof宏、offsetof宏、指针变量、结构体、联合体的理解

    如题所述,最近时间在复习C语言.自己实现了一个C语言例程,以加深对宏.大小端.typeof宏.offsetof宏.指针变量.结构体.联合体的理解.关于细分知识后续有空再填充- swap宏的使用: 对应 ...

  5. c 定义结构体时提示应输入声明_C++|了解结构体的内存对齐(成员声明的顺序影响占用空间大小)...

    我们使用的电子计算机绝大部分都是冯·诺依曼结构的机器,遵循"存储程序"的概念.数据处理以存储为前提,在编程中数据如何"存得进去,取得出来",并且符合空间.时间效 ...

  6. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  7. Silve37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)

    在本节中将讲述Silverlight和ASP.NET页面的相互传参的两种常用方式:Cookie和QueryString.首先我们新建一个名 为SLConnectASP.NET的Silverlight应 ...

  8. springboot前端传参date类型后台处理方式

    springboot前端传参date类型后台处理方式 先说结论:建议大家直接使用@JsonFormat,原因如下: 1.针对json格式:在配置文件中加以下配置 spring.jackson.date ...

  9. asp.net html silverlight 传参数,Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)...

    Silverlight实用窍门系列:37  程兴亮,网名煦风满裳 在本节中将讲述Silverlight和ASP.NET页面的相互传参的两种常用方式:Cookie和QueryString.首先我们新建一 ...

最新文章

  1. 【 Notes 】INS Preliminary Introduction
  2. Ubuntu 软件包管理APT
  3. CRM Fiori pipeline应用的背景色问题
  4. 你好,了解一下Java 14带来的一系列新功能
  5. 【Computer Organization笔记29】大作业展示
  6. 找出数组中只出现过一次的数
  7. Java微信公众平台开发(十五)--微信JSSDK的使用
  8. windows更新安装时出现此更新不适用于你的计算机的解决办法  dos 安装 msu
  9. 你必不可能错过的java开源商城项目
  10. gg修改器修改数值没有用怎么办_GG修改器详细使用教程
  11. 【用C语言绘制谢尔宾斯基三角形】
  12. 远程桌面连接:远程桌面由于以下原因之一无法连接到远程计算机
  13. nutch添加imdict-chinese-analyzer实现中文分词
  14. k8s serviceAccountName填写后应用没有进行挂载问题处理
  15. 两个线程交替打印A1B2C3D4E5输出,6种实现方式
  16. 电脑激活Office时出现异常,激活界面白屏或提示无法与服务器
  17. 计算机必备ASCII码表
  18. C#进程间通信的几种方式:管道通信
  19. 小米手机v3.exo 合并_eXo发布Web Content Management 2.0作为开源
  20. Pandas进阶伍 变形

热门文章

  1. 数据结构 - 链表(单向环形链表)(约瑟夫问题)
  2. 【Python CheckiO 题解】Easy Unpack
  3. 【CSU - 1980 】不堪重负的树(树上区间dp)
  4. 【牛客 - 315B】 勇气获得机(二叉树性质,思维,知识点,tricks)
  5. 微机原理实验8254计算机钢琴,GitHub - SincereXIA/PianoMFC: 西电微机原理课设项目,键盘电子乐器演奏程序设计(电子琴),MFC...
  6. Android万能遥控菜单选择添加,Android万能遥控器小应用
  7. 计算机选购知识点,笔记本选购知识点,找准自己的需求才是王道
  8. c语言 手机图形库,c语言的图形库 - osc_opiar5rp的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 简单的cpu飙升排查方法
  10. leetcode876 链表中间的结点