免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2142 | 回复: 6
打印 上一主题 下一主题

[C] 函数返回指针能行吗? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-06 19:58 |只看该作者 |倒序浏览

  1. char* cmd_system(const char* command)
  2. {
  3.     char* result = (char*)"";
  4.     FILE *fpRead;
  5.     fpRead = popen(command, "r");

  6.     if(fpRead!=NULL){
  7.                 char buf[1024];
  8.                 memset(buf,'\0',sizeof(buf));
  9.                 while(fgets(buf,1024-1,fpRead)!=NULL)
  10.                 {
  11.                         result = buf;
  12.                 }
  13.                 if(fpRead!=NULL)
  14.                         pclose(fpRead);
  15.     }

  16.     return result;
  17. }

  18. char* user_tcp_count=cmd_system((char*)"netstat -nat|grep -i \"8010\"|wc -l");
复制代码
为什么user_tcp_count还能获取到值呢?不是说函数结束后属于他的内存将会被销毁吗?

论坛徽章:
224
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:1015-16赛季CBA联赛之四川
日期:2023-07-25 16:53:45操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
2 [报告]
发表于 2016-01-06 20:20 |只看该作者
必须的,可以哦

函数指针,这个只是建议不要使用

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2016-01-06 20:28 |只看该作者
你这代码是有问题的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2016-01-06 21:15 |只看该作者
恩,我感觉也是,还是传个指针进来吧

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
5 [报告]
发表于 2016-01-06 22:44 |只看该作者
想象一下你到旅馆开了一个房间,当你退房之后发现手机落在里面忘拿了,然后你回去拿手机,此时:
A. 一定能拿到手机
B. 一定不能拿到手机
C. 要看打扫房间的清洁工心情
你认为哪个是正确答案?

在这里,房间就是你分配的char buf[1024],手机就是你写在里面的数据,清洁工就是OS。

评分

参与人数 1可用积分 +6 收起 理由
MMMIX + 6 赞一个!

查看全部评分

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2016-01-07 11:51 |只看该作者
windoze 发表于 2016-01-06 22:44
想象一下你到旅馆开了一个房间,当你退房之后发现手机落在里面忘拿了,然后你回去拿手机,此时:
A. 一定能 ...
比喻很形象,谢谢。

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:4415-16赛季CBA联赛之北京
日期:2018-03-04 17:01:50
7 [报告]
发表于 2016-01-20 12:59 |只看该作者
回复 5# windoze


赞美,
很深奥的比喻说
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP