博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结构体指针传参与返回值
阅读量:5347 次
发布时间:2019-06-15

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

结构体指针


结构体指针大家想必都非常清楚,我们也一直强调传参的时候使用结构体指针(占用4字节),减少对栈的压力。
但是今天看linux的标准io时候。发现了localtime时间函数 返回值是一个结构体指针。当时有点懵逼了,开始觉得这样就不对。{当然肯定是我想多了}

      为什么会觉得不对那?因为它是个子函数,返回一个局部变量的地址显然是没有价值的。函数调用完就被释放了呀。你在用指针承接也没有价值,完全是野指针啊。百度了一下还真的有人在么做,结果出现了问题。但是其实我的想法是错误的。人家大神怎么可能犯这种错误!突然想到了malloc。人家肯定是用了malloc来分配了空间。就是你的子函数调用完,这块malloc申请的空间也不会释放,除非free。(至于为什么。这源于他们分配空间的地方不同。改天反汇编贴出让大家看看)。那就ok了吗?当然没完。它什么时候释放那?我也不知道啊。在学习了内核源码,看看他的本质吧!

ocaltime函数

将时间数值变换成本地时间,考虑到本地时区和夏令时标志;
原型: struct tm *localtime(const time_t * calptr);
头文件 <time.h>
 返回值:
成功: struct tm *结构体, 原型如下:
struct tm {
int tm_sec; /* 秒 – 取值区间为[0,59] */
int tm_min; /* 分 - 取值区间为[0,59] */
int tm_hour; /* 时 - 取值区间为[0,23] */
int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一 */
int tm_yday; /* 从每年1月1日开始的天数– 取值区间[0,365],其中0代表1月1日 */
int tm_isdst; /* 夏令时标识符,夏令时tm_isdst为正;不实行夏令时tm_isdst为0 */
};
此结构体空间由内核自动分配, 而且不要去释放它.
失败: NULL

 

 

结构体局部变量传参的错误


truct fenshu
{
int fenzi;
int fenmu;
};
fenshu* add(fenshu* a,fenshu*b)
{
fenshu *s;
s->fenmu=a->fenmu*b->fenmu;
s->fenzi=a->fenmu*b->fenzi+a->fenzi*b->fenmu;
return s;

};
fenshu * mul(fenshu* a,fenshu*b)
{
fenshu* s;
s->fenmu=a->fenmu*b->fenmu;
s->fenzi=a->fenzi*b->fenzi;
return s;
}
2016年10月14日12:24:06 张飞online

转载于:https://www.cnblogs.com/zhangfeionline/p/5959932.html

你可能感兴趣的文章
Cisco WebEx设备ssl证书安装指南
查看>>
[bzoj省选十连测推广赛2]T2七彩树
查看>>
Qt Widget 在点击了主窗口右上角的叉叉时候,程序没有结束问题
查看>>
无题,李商隐,哈哈哈,随便写写
查看>>
微信支付(java版本)_支付结果通知
查看>>
LeetCode 476. Number Complement
查看>>
深度解密Go语言之context
查看>>
The postulate written ghd australia outlet
查看>>
windows 7、Windows10 系统目录迁移,修改安装的默认路径:Users,Program Files,ProgramData
查看>>
drupal 计划
查看>>
jeecg中选择标签
查看>>
【日语】アップデート(update)一吻定情OP
查看>>
bWAPP----HTML OS Command Injection - Blind
查看>>
UOJ #10 pyx的难题
查看>>
一.JSP开发的工具下载与环境搭建
查看>>
js模仿块级作用域
查看>>
牛客网——A找一找
查看>>
【Leetcode】24. Swap Nodes in Pairs
查看>>
相亲问题/秘书问题/选股问题/选时问题
查看>>
在java中的Try Catch块-------------异常处理(2)
查看>>