博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结构体的传参理解成员的存储方式
阅读量:4641 次
发布时间:2019-06-09

本文共 1070 字,大约阅读时间需要 3 分钟。

结构体的成员变量在内存中存储的方式,决定于设定的内存对齐方式是几字节:gcc编译默认使用4字节对齐:  1 #include 
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

你可能感兴趣的文章
重温JSP学习笔记--与日期数字格式化有关的jstl标签库
查看>>
java-Date-DateFormat-Calendar
查看>>
封装CLLocationManager定位获取经纬度
查看>>
我的第一篇博客-(Eclipse中或Myeclipse中如果不小心删除了包那可怎么办?)
查看>>
对easyui datagrid组件的一个小改进
查看>>
类似以下三图竞争关系的IT企业
查看>>
清明节
查看>>
ubuntu如何安装svn客户端?
查看>>
arcgis for javascript (3.17)
查看>>
AI之路,第二篇:python数学知识2
查看>>
[LintCode] 空格替换
查看>>
JSSDK微信支付封装的支付类方法,代码比较齐全,适合收藏
查看>>
mfc Radio Buttons
查看>>
86. Partition List
查看>>
[LintCode] 378 Convert Binary Search Tree to Doubly Linked List 解题报告
查看>>
3.9 java基础总结集合①LIst②Set③Map④泛型⑤Collections
查看>>
Unix和Linux下C语言学习指南
查看>>
css3圈圈进度条
查看>>
Python 函数动态参数
查看>>
javascript之非构造函数的继承
查看>>