免费注册 查看新帖 |

Chinaunix

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

[C] 任何函数其实只需要传一个结构指针参数? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-18 21:54 |只看该作者 |倒序浏览
我的想法是,C语言里的任何函数其实只需要一个结构指针参数。

一个简单例子:

  1. int get_my_time(int h, int m, int s);
复制代码


可以替换成:

  1. typedef struct
  2. {
  3.     int h;
  4.     int m;
  5.     int s;
  6. } time_t;

  7. int get_my_time(time_t  *time);
复制代码


因此理论上说,任何函数的参数只需要传入一个结构指针。这个想法对不对呢?

论坛徽章:
0
2 [报告]
发表于 2009-11-18 22:08 |只看该作者
很多书上面说参数不能超过多少个为好,好像是7个。但是如果传结构指针,也就算一个参数吧?对个数的限制不就显得没有意义了。况且传结构指针的效率比传单个参数还要高。

论坛徽章:
0
3 [报告]
发表于 2009-11-18 22:24 |只看该作者
果然厉害。

论坛徽章:
0
4 [报告]
发表于 2009-11-18 22:33 |只看该作者
我的想法是,C语言里的任何函数其实只需要一个全局变量。都不用参数。

软件工程里,好像结构体的耦合程度是多少了。

[ 本帖最后由 pagx 于 2009-11-18 22:34 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-11-18 22:55 |只看该作者
恩,不错,这样是节省参数个数。但,不知道ls在说啥=。=

论坛徽章:
0
6 [报告]
发表于 2009-11-18 22:59 |只看该作者
4L是亮点

论坛徽章:
0
7 [报告]
发表于 2009-11-18 23:05 |只看该作者
只需要一个参数是个极端的例子,让3楼4楼的见笑了
对参数限制的约定似乎没有道理,你不能保证别人传结构(指针)进来,对吧
我看到一些程序有30多个参数,很诧异为什么不传一个结构的指针进来
还有一些GUI窗口程序就是只传送一个窗体的结构指针,并不是没有这么用的

论坛徽章:
0
8 [报告]
发表于 2009-11-18 23:20 |只看该作者
pthread_create() 要传多个参数时一般用结构指针吧

论坛徽章:
0
9 [报告]
发表于 2009-11-19 09:42 |只看该作者
原帖由 parco_cu 于 2009-11-18 23:05 发表
只需要一个参数是个极端的例子,让3楼4楼的见笑了
对参数限制的约定似乎没有道理,你不能保证别人传结构(指针)进来,对吧
我看到一些程序有30多个参数,很诧异为什么不传一个结构的指针进来
还有一些 ...

比如像一个点的坐标,这样两个值使用的时候一定是一起出现的,这个时候肯定是要用结构的。但是有的时候整个程序不是就一个main 和 一个fun啊!这些参数从逻辑或者使用上并不是一定要出现在一起的啊,这样搞个结构是不是又比较牵强了呢?小弟新手,就是我个人的想法。。。大家拍砖。。。

论坛徽章:
80
20周年集字徽章-庆
日期:2020-10-28 14:09:1215-16赛季CBA联赛之北京
日期:2020-10-28 13:32:5315-16赛季CBA联赛之北控
日期:2020-10-28 13:32:4815-16赛季CBA联赛之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
10 [报告]
发表于 2009-11-19 10:16 |只看该作者
高手啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP