结构体的传参理解成员的存储方式

 结构体的成员变量在内存中存储的方式,决定于设定的内存对齐方式是几字节: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse插件大全整理学习

Eclipse Web Tools Platform(WTP) 地址&#xff1a;http://download.eclipse.org/webtools/ WTP十分强大&#xff0c;支持HTML, JavaScript, XML, JSP&#xff0c;支持语法着色&#xff0c;代码提示&#xff0c;代码折叠等&#xff0c;以及其它一堆JavaEE相关的功能。Web开发必…

网友力荐教子名言 只有50句却能改变儿女一生

从当今的家庭来看&#xff0c;大多数的家长把自己的一切希望寄托在孩子的身上&#xff0c;这个〝望子成龙〞或〝盼女成凤〞的希望能否成为现实&#xff0c;需要多方面的努力&#xff0c;而家庭是孩子的第一所〝学校〞&#xff0c; 父母是孩子的第一位〝老师〞&#xff0c;家庭…

Python-02-基础知识

一、第一个Python程序 【第一步】新建一个hello.txt 【第二步】将后缀名txt改为py 【第三步】使用记事本编辑该文件 【第四步】在cmd中运行该文件 print("Hello World!") 强调&#xff1a;python解释器执行程序是解释执行&#xff0c;即打开文件读内容&#xff0c;因…

利用FS寄存器获取KERNEL32.DLL基址算法的证明(ZZ)

转自&#xff1a;http://blog.csdn.net/int2e/archive/2008/01/09/2032732.aspxFS寄存器指向当前活动线程的TEB结构&#xff08;线程结构&#xff09; 偏移 说明 000 指向SEH链指针 004 线程堆栈顶部 008 线程堆栈底部 00C SubSystemTib 010 FiberData 014 ArbitraryUse…

script 放置最佳位置以及 html 执行顺序

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 看到知乎上有很多讨论关于javascript位置的文章。所以特意留意了这方面的问题。 首先要了解到的是&#xff1a; html文件是自上而下的执…

【Arduino】使用C#实现Arduino与电脑进行串行通讯

在给Arduino编程的时候&#xff0c;因为没有调试工具&#xff0c;经常要通过使用串口通讯的方式调用Serial.print和Serial.println输出Arduino运行过程中的相关信息&#xff0c;然后在电脑上用Arduino IDE的Serial Monitor来查看print出来的信息。Serial Monitor不仅可以接受Ar…

node、npm、vue安装 -- VUE 项目 demo 实例

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 安装node&#xff1a; sudo yum install epel-release sudo yum install nodejs node --version // 安装好后查看版本2. 安装 npm …

用C语言实现简单的停车场管理

这个程序是利用栈和循环队列实现的&#xff0c;自己得先处理好逻辑关系就好了。由于题目没有要求&#xff0c;这个程序就没加重复判断&#xff0c;比如一辆车已经停在车位上或者便道上&#xff0c;再来一辆就判断不了了。关于栈&#xff0c;就是先进后出的思想&#xff0c;队列…

Windows To Ghost系统封装之必备软件集 - 好压

好压压缩软件&#xff08;HaoZip&#xff09;是强大的压缩文件管理器&#xff0c;是完全免费的新一代压缩软件&#xff0c;相比其它压缩软件系统资源占用更少&#xff0c;有更好的兼容性&#xff0c;压缩率比较高。 它提供了对ZIP、7Z和TAR文件的完整支持&#xff0c;能解压RAR…

XSLT学习笔记

1. 样式声明&#xff1a;<xsl:stylesheet>或<xsl:transform> 2. XSLT常用元素&#xff1a; 2.1 <xsl:template>&#xff1a;创建模板 Match属性的作用是使模板和XML元素相关联 e.g.:<xsl:template match"\">......</xsl:template&g…

超详细设置 Idea 类注释模板和方法注释模板

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 网上找了一下&#xff0c;没有很详细且正确介绍Idea配置注释模板的&#xff0c;于是结合多篇文章自己琢磨整理出如下。 设置类注释模板…

水调歌头·中秋

转载于:https://www.cnblogs.com/divineka/archive/2004/09/04/39560.html

代码面试最常用的10大算法

摘要&#xff1a;面试也是一门学问&#xff0c;在面试之前做好充分的准备则是成功的必须条件&#xff0c;而程序员在代码面试时&#xff0c;常会遇到编写算法的相关问题&#xff0c;比如排序、二叉树遍历等等。 在程序员的职业生涯中&#xff0c;算法亦算是一门基础课程&#…

IDEA 2018 集成 MyBatis Generator 插件 详解、代码生成

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、修改maven的pom文件 只需要将如下依赖添加到pom.xml文件中即可。&#xff08;注意此处是以plugin的方式&#xff0c;放在<plugins…

MongoDB监控及报警

转载请注明出处&#xff1a;https://www.cnblogs.com/shining5/p/11142357.html MongoDB监控及报警 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库&#xff0c;其使用go语言开发。基本原理是通过HTTP协议周期性抓取被监控组件的状态&#xff0c;任意组件只要提…

浅谈三种特殊进程:孤儿进程,僵尸进程和守护进程

昨天学了进程控制&#xff0c;就这三种特殊的进程研究了一下&#xff0c;其中也借鉴了一些前人总计的经验。 1、孤儿进程 如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这里子进程的父进程就是init进程(1号进程).其实还是很好理解的。 // 父进程先子进程退…

设计师为什么要学编程,开发者为什么要学设计?

摘要&#xff1a;设计师和开发者目前正处于互联网的两端&#xff0c;看着彼此做不同的工作。如果他们能互相学习对方的技术&#xff0c;那么会协作得更好。 很多开发者认为&#xff0c;设计师应该学会如何编写代码&#xff0c;这一点是真的&#xff1a;通过学习&#xff0c;设计…

git 查看远程仓库地址

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 就一个命令&#xff1a; git remote -v 如下&#xff1a;

tensorflow之tf.train.exponential_decay()指数衰减法

exponential_decay(learning_rate, global_steps, decay_steps, decay_rate, staircaseFalse, nameNone) 使用方式&#xff1a; tf.tf.train.exponential_decay() 例子&#xff1a; tf.train.exponential_decay(self.config.e_lr, self.e_global_steps&#xff0c;self.config…

wait( )和 waitpid( )

进程一旦调用了wait&#xff0c;就立即阻塞自己&#xff0c;由wait自动分析是否当前进程的某个子进程已经退出&#xff0c;如果让它找到了这样一个已经变成僵尸的子进程&#xff0c;wait就会收集这个子进程的信息&#xff0c;并把它彻底销毁后返回&#xff1b;如果没有找到这样…